[yocto] [meta-security][PATCH v2] trousers: fix musl compilation

André Draszik git at andred.net
Mon Nov 28 01:32:46 PST 2016


Changes from v1:
- Upstream-Status of 0001-Check-that-getpwent_r-is-available-before-using-
it.patch updated

On Mon, 2016-11-28 at 09:31 +0000, André Draszik wrote:
> From: André Draszik <adraszik at tycoint.com>
> 
> Backport patches to fix compilation.
> 
> Signed-off-by: André Draszik <adraszik at tycoint.com>
> ---
>  ...t-getpwent_r-is-available-before-using-it.patch | 85
> ++++++++++++++++++++++
>  ...si_param.c-Include-limits.h-for-POSIX_MAX.patch | 36 +++++++++
>  recipes-tpm/trousers/trousers_0.3.13.bb            |  2 +
>  3 files changed, 123 insertions(+)
>  create mode 100644 recipes-tpm/trousers/files/0001-Check-that-getpwent_r-
> is-available-before-using-it.patch
>  create mode 100644 recipes-tpm/trousers/files/0001-tsp_tcsi_param.c-
> Include-limits.h-for-POSIX_MAX.patch
> 
> diff --git a/recipes-tpm/trousers/files/0001-Check-that-getpwent_r-is-
> available-before-using-it.patch b/recipes-tpm/trousers/files/0001-Check-
> that-getpwent_r-is-available-before-using-it.patch
> new file mode 100644
> index 0000000..e7ba2eb
> --- /dev/null
> +++ b/recipes-tpm/trousers/files/0001-Check-that-getpwent_r-is-available-
> before-using-it.patch
> @@ -0,0 +1,85 @@
> +From bb721b0ae5882992037153e7257791101172556e Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?No=C3=A9=20Rubinstein?= <nrubinstein at aldebaran.com>
> +Date: Wed, 24 Aug 2016 18:55:25 +0200
> +Subject: [PATCH] Check that getpwent_r is available before using it
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +This fixes building trousers with musl
> +
> +Signed-off-by: Noé Rubinstein <nrubinstein at aldebaran.com>
> +---
> +Upstream-Status: Inappropriate [not author https://git.busybox.net/buildr
> oot/plain/package/trousers/0004-Check-that-getpwent_r-is-available-before-
> using-it.patch]
> +Signed-off-by: André Draszik <adraszik at tycoint.com>
> + configure.in        |  4 ++++
> + src/tspi/ps/tspps.c | 10 +++++-----
> + 2 files changed, 9 insertions(+), 5 deletions(-)
> +
> +diff --git a/configure.in b/configure.in
> +index add23dc..cfdfcaa 100644
> +--- a/configure.in
> ++++ b/configure.in
> +@@ -144,6 +144,10 @@ else
> + 	AC_MSG_ERROR(["gtk", "openssl" and "none" are the only supported
> gui options for trousers])
> + fi
>> ++# Look for getpwent_r. If it is not found, getpwent will be used
> instead, with
> ++# an additional mutex.
> ++AC_CHECK_FUNC(getpwent_r, [AC_DEFINE(HAVE_GETPWENT_R)])
> ++
> + #
> + # The default port that the TCS daemon listens on
> + #
> +diff --git a/src/tspi/ps/tspps.c b/src/tspi/ps/tspps.c
> +index c6f9c3d..9d00d2a 100644
> +--- a/src/tspi/ps/tspps.c
> ++++ b/src/tspi/ps/tspps.c
> +@@ -45,7 +45,7 @@
>> + static int user_ps_fd = -1;
> + static MUTEX_DECLARE_INIT(user_ps_lock);
> +-#if (defined (__FreeBSD__) || defined (__OpenBSD__))
> ++#ifndef HAVE_GETPWENT_R
> + static MUTEX_DECLARE_INIT(user_ps_path);
> + #endif
> + static struct flock fl;
> +@@ -60,7 +60,7 @@ get_user_ps_path(char **file)
> + 	TSS_RESULT result;
> + 	char *file_name = NULL, *home_dir = NULL;
> + 	struct passwd *pwp;
> +-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
> ++#ifdef HAVE_GETPWENT_R
> + 	struct passwd pw;
> + #endif
> + 	struct stat stat_buf;
> +@@ -72,7 +72,7 @@ get_user_ps_path(char **file)
> + 		*file = strdup(file_name);
> + 		return (*file) ? TSS_SUCCESS :
> TSPERR(TSS_E_OUTOFMEMORY);
> + 	}
> +-#if (defined (__FreeBSD__) || defined (__OpenBSD__))
> ++#ifndef HAVE_GETPWENT_R
> + 	MUTEX_LOCK(user_ps_path);
> + #endif
>> +@@ -90,7 +90,7 @@ get_user_ps_path(char **file)
> + #else
> + 	setpwent();
> + 	while (1) {
> +-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
> ++#ifdef HAVE_GETPWENT_R
> + 		rc = getpwent_r(&pw, buf, PASSWD_BUFSIZE, &pwp);
> + 		if (rc) {
> + 			LogDebugFn("USER PS: Error getting path to home
> directory: getpwent_r: %s",
> +@@ -99,7 +99,7 @@ get_user_ps_path(char **file)
> + 			return TSPERR(TSS_E_INTERNAL_ERROR);
> + 		}
>> +-#elif (defined (__FreeBSD__) || defined (__OpenBSD__))
> ++#else
> + 		if ((pwp = getpwent()) == NULL) {
> + 			LogDebugFn("USER PS: Error getting path to home
> directory: getpwent: %s",
> +                                    strerror(rc));
> +-- 
> +2.10.2
> +
> diff --git a/recipes-tpm/trousers/files/0001-tsp_tcsi_param.c-Include-
> limits.h-for-POSIX_MAX.patch b/recipes-tpm/trousers/files/0001-
> tsp_tcsi_param.c-Include-limits.h-for-POSIX_MAX.patch
> new file mode 100644
> index 0000000..c01040d
> --- /dev/null
> +++ b/recipes-tpm/trousers/files/0001-tsp_tcsi_param.c-Include-limits.h-
> for-POSIX_MAX.patch
> @@ -0,0 +1,36 @@
> +From c1b5f33845c56dc7aef769c99758b4f77a041d43 Mon Sep 17 00:00:00 2001
> +From: Felix Janda <felix.janda at posteo.de>
> +Date: Wed, 31 Aug 2016 22:52:58 -0400
> +Subject: [PATCH] tsp_tcsi_param.c: Include <limits.h> for POSIX_MAX
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +Use POSIX instead of glibc-specific header.
> +Fixes compilation with musl libc.
> +
> +Signed-off-by: Felix Janda <felix.janda at posteo.de>
> +Reviewed-by: Hon Ching(Vicky) Lo <honclo at linux.vnet.ibm.com>
> +
> +---
> +Upstream-Status: Backport [https://sourceforge.net/p/trousers/trousers/ci
> /59351a56cac1710e89d207dff07eb23bbc644c13/]
> +Signed-off-by: André Draszik <adraszik at tycoint.com>
> + src/tspi/tsp_tcsi_param.c | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/src/tspi/tsp_tcsi_param.c b/src/tspi/tsp_tcsi_param.c
> +index 670f86f..8f2b4e4 100644
> +--- a/src/tspi/tsp_tcsi_param.c
> ++++ b/src/tspi/tsp_tcsi_param.c
> +@@ -11,7 +11,7 @@
> + #include <stdlib.h>
> + #include <string.h>
> + #include <stdio.h>
> +-#include <bits/local_lim.h>
> ++#include <limits.h>
> + #include "trousers/tss.h"
> + #include "trousers/trousers.h"
> + #include "trousers_types.h"
> +-- 
> +2.10.2
> +
> diff --git a/recipes-tpm/trousers/trousers_0.3.13.bb b/recipes-
> tpm/trousers/trousers_0.3.13.bb
> index 6853f18..a69f763 100644
> --- a/recipes-tpm/trousers/trousers_0.3.13.bb
> +++ b/recipes-tpm/trousers/trousers_0.3.13.bb
> @@ -7,6 +7,8 @@ SECTION = "security/tpm"
>  DEPENDS = "openssl"
>  
>  SRC_URI = "http://sourceforge.net/projects/trousers/files/${BPN}/${PV}/${
> BPN}-${PV}.tar.gz \
> +    file://0001-tsp_tcsi_param.c-Include-limits.h-for-POSIX_MAX.patch \
> +    file://0001-Check-that-getpwent_r-is-available-before-using-it.patch
> \
>      file://07-read_data-not-inline.patch \
>      file://trousers.init.sh \
>      file://trousers-udev.rules \



More information about the yocto mailing list