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

akuster808 akuster808 at gmail.com
Mon Nov 28 19:30:02 PST 2016



On 11/28/2016 01:32 AM, André Draszik wrote:
> Changes from v1:
> - Upstream-Status of 0001-Check-that-getpwent_r-is-available-before-using-
> it.patch updated
thanks for the note.

merged

Thanks for the patch.
Armin
> 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