You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
214 lines
5.7 KiB
214 lines
5.7 KiB
Index: Makefile.in |
|
--- Makefile.in.orig 2020-01-29 17:42:32.000000000 +0100 |
|
+++ Makefile.in 2020-03-12 23:07:35.270076000 +0100 |
|
@@ -1941,7 +1941,7 @@ |
|
p11-kit/p11-kit.c \ |
|
$(NULL) |
|
|
|
-p11_kit_p11_kit_LDADD = \ |
|
+p11_kit_p11_kit_LDADD = -static \ |
|
libp11-kit.la \ |
|
libp11-tool.la \ |
|
libp11-common.la \ |
|
@@ -2147,7 +2147,7 @@ |
|
@WITH_TRUST_MODULE_TRUE@libtrust_testable_la_LIBADD = \ |
|
@WITH_TRUST_MODULE_TRUE@ $(LIBTASN1_LIBS) |
|
|
|
-@WITH_TRUST_MODULE_TRUE@trust_trust_LDADD = \ |
|
+@WITH_TRUST_MODULE_TRUE@trust_trust_LDADD = -static \ |
|
@WITH_TRUST_MODULE_TRUE@ libtrust-data.la \ |
|
@WITH_TRUST_MODULE_TRUE@ libp11-kit.la \ |
|
@WITH_TRUST_MODULE_TRUE@ libp11-common.la \ |
|
Index: common/compat.c |
|
--- common/compat.c.orig 2020-01-07 16:15:00.000000000 +0100 |
|
+++ common/compat.c 2020-03-12 23:07:35.270277000 +0100 |
|
@@ -39,6 +39,9 @@ |
|
* on older pthreads implementations |
|
*/ |
|
#define _XOPEN_SOURCE 700 |
|
+#ifdef __FreeBSD__ |
|
+#define __BSD_VISIBLE 1 |
|
+#endif |
|
|
|
#include "compat.h" |
|
#include "debug.h" |
|
@@ -799,7 +802,7 @@ |
|
#ifndef HAVE_GETAUXVAL |
|
|
|
unsigned long |
|
-getauxval (unsigned long type) |
|
+_p11_getauxval (unsigned long type) |
|
{ |
|
static unsigned long secure = 0UL; |
|
static bool check_secure_initialized = false; |
|
@@ -811,7 +814,7 @@ |
|
assert (type == AT_SECURE); |
|
|
|
if (!check_secure_initialized) { |
|
-#if defined(HAVE___LIBC_ENABLE_SECURE) |
|
+#if defined(HAVE___LIBC_ENABLE_SECURE) && !defined(__GNU__) |
|
extern int __libc_enable_secure; |
|
secure = __libc_enable_secure; |
|
|
|
@@ -848,7 +851,7 @@ |
|
char * |
|
secure_getenv (const char *name) |
|
{ |
|
- if (getauxval (AT_SECURE)) |
|
+ if (_p11_getauxval (AT_SECURE)) |
|
return NULL; |
|
return getenv (name); |
|
} |
|
Index: common/compat.h |
|
--- common/compat.h.orig 2020-01-07 16:15:00.000000000 +0100 |
|
+++ common/compat.h 2020-03-12 23:07:35.270410000 +0100 |
|
@@ -343,10 +343,11 @@ |
|
#ifdef HAVE_GETAUXVAL |
|
|
|
#include <sys/auxv.h> |
|
+#define _p11_getauxval(X) getauxval(X) |
|
|
|
#else /* !HAVE_GETAUXVAL */ |
|
|
|
-unsigned long getauxval (unsigned long type); |
|
+unsigned long _p11_getauxval (unsigned long type); |
|
|
|
#define AT_SECURE 23 |
|
|
|
Index: common/frob-getauxval.c |
|
--- common/frob-getauxval.c.orig 2019-10-21 17:59:08.000000000 +0200 |
|
+++ common/frob-getauxval.c 2020-03-12 23:07:35.270525000 +0100 |
|
@@ -55,7 +55,7 @@ |
|
abort (); |
|
} |
|
|
|
- ret = getauxval (type); |
|
+ ret = _p11_getauxval (type); |
|
printf ("getauxval(%lu) == %lu\n", type, ret); |
|
return (int)ret; |
|
} |
|
Index: common/path.c |
|
--- common/path.c.orig 2019-10-22 11:21:37.000000000 +0200 |
|
+++ common/path.c 2020-03-12 23:07:35.270645000 +0100 |
|
@@ -108,7 +108,7 @@ |
|
{ |
|
const char *env; |
|
|
|
- if (getauxval (AT_SECURE)) { |
|
+ if (_p11_getauxval (AT_SECURE)) { |
|
errno = EPERM; |
|
return NULL; |
|
} |
|
Index: common/unix-peer.c |
|
--- common/unix-peer.c.orig 2019-10-21 17:59:08.000000000 +0200 |
|
+++ common/unix-peer.c 2020-03-12 23:07:35.270755000 +0100 |
|
@@ -47,6 +47,10 @@ |
|
# include <ucred.h> |
|
#endif |
|
|
|
+#if (!defined(SO_PEERCRED) && !defined(HAVE_GETPEEREID) && !defined(HAVE_GETPEERUCRED) && defined(HAVE_SYS_UCRED_H)) || defined(__FreeBSD__) |
|
+# include <sys/ucred.h> |
|
+#endif |
|
+ |
|
/* Returns the unix domain socket peer information. |
|
* Returns zero on success. |
|
*/ |
|
@@ -106,6 +110,25 @@ |
|
|
|
if (ret) |
|
return -1; |
|
+ |
|
+#elif (defined(HAVE_SYS_UCRED_H) && defined(LOCAL_PEERCRED) && defined(XUCRED_VERSION)) || defined(__FreeBSD__) |
|
+ struct xucred cr; |
|
+ socklen_t cr_len; |
|
+ |
|
+ cr_len = sizeof (cr); |
|
+ ret = getsockopt (cfd, 0, LOCAL_PEERCRED, &cr, &cr_len); |
|
+ if (ret == -1) |
|
+ return -1; |
|
+ |
|
+ if (uid) |
|
+ *uid = cr.cr_uid; |
|
+ |
|
+ if (gid) |
|
+ *gid = cr.cr_gid; |
|
+ |
|
+ /* pid not available */ |
|
+ if (pid) |
|
+ *pid = (socklen_t)-1; |
|
#else |
|
#error "Unsupported UNIX variant" |
|
#endif |
|
Index: configure |
|
--- configure.orig 2020-01-29 17:42:31.000000000 +0100 |
|
+++ configure 2020-03-12 23:07:57.497302000 +0100 |
|
@@ -16178,9 +16178,6 @@ |
|
|
|
|
|
|
|
-if test "$enable_static" = "yes"; then |
|
- as_fn_error $? "p11-kit cannot be used as a static library" "$LINENO" 5 |
|
-fi |
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for win32" >&5 |
|
$as_echo_n "checking for win32... " >&6; } |
|
Index: p11-kit/conf.c |
|
--- p11-kit/conf.c.orig 2020-01-07 16:15:00.000000000 +0100 |
|
+++ p11-kit/conf.c 2020-03-12 23:07:35.270893000 +0100 |
|
@@ -229,7 +229,7 @@ |
|
} |
|
|
|
if (mode != CONF_USER_NONE) { |
|
- if (getauxval (AT_SECURE)) { |
|
+ if (_p11_getauxval (AT_SECURE)) { |
|
p11_debug ("skipping user config in setuid or setgid program"); |
|
mode = CONF_USER_NONE; |
|
#ifdef OS_UNIX |
|
Index: p11-kit/frob-setuid.c |
|
--- p11-kit/frob-setuid.c.orig 2019-10-21 17:59:08.000000000 +0200 |
|
+++ p11-kit/frob-setuid.c 2020-03-12 23:07:35.271006000 +0100 |
|
@@ -70,7 +70,7 @@ |
|
printf ("'setting' on module 'one': %s\n", field ? field : "(null)"); |
|
|
|
assert (field != NULL); |
|
- if (getauxval (AT_SECURE)) |
|
+ if (_p11_getauxval (AT_SECURE)) |
|
assert (strcmp (field, "system1") == 0); |
|
else |
|
assert (strcmp (field, "user1") == 0); |
|
Index: p11-kit/modules.c |
|
--- p11-kit/modules.c.orig 2020-01-07 16:15:00.000000000 +0100 |
|
+++ p11-kit/modules.c 2020-03-12 23:07:35.271301000 +0100 |
|
@@ -69,6 +69,7 @@ |
|
#include <stdlib.h> |
|
#include <string.h> |
|
#include <unistd.h> |
|
+#include <limits.h> |
|
|
|
/** |
|
* SECTION:p11-kit |
|
Index: trust/extract-jks.c |
|
--- trust/extract-jks.c.orig 2019-10-21 17:59:08.000000000 +0200 |
|
+++ trust/extract-jks.c 2020-03-12 23:07:35.271439000 +0100 |
|
@@ -250,9 +250,7 @@ |
|
* when this was this certificate was added to the keystore, however |
|
* we don't have that information. Java uses time in milliseconds |
|
*/ |
|
- if (_p11_extract_jks_timestamp) |
|
- now = _p11_extract_jks_timestamp; |
|
- else { |
|
+ { |
|
char *source_date_epoch; |
|
source_date_epoch = secure_getenv ("SOURCE_DATE_EPOCH"); |
|
if (source_date_epoch) { |
|
@@ -278,7 +276,9 @@ |
|
return false; |
|
} |
|
now = epoch; |
|
- } else |
|
+ } else if (_p11_extract_jks_timestamp) |
|
+ now = _p11_extract_jks_timestamp; |
|
+ else |
|
now = time (NULL); |
|
} |
|
|
|
|