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

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);
}