summaryrefslogtreecommitdiffstats
path: root/patches/source/krb5/e134d9a6b6332bd085093e9075c949ece784fcd0.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/krb5/e134d9a6b6332bd085093e9075c949ece784fcd0.patch')
-rw-r--r--patches/source/krb5/e134d9a6b6332bd085093e9075c949ece784fcd0.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/patches/source/krb5/e134d9a6b6332bd085093e9075c949ece784fcd0.patch b/patches/source/krb5/e134d9a6b6332bd085093e9075c949ece784fcd0.patch
new file mode 100644
index 000000000..6bf0b90a2
--- /dev/null
+++ b/patches/source/krb5/e134d9a6b6332bd085093e9075c949ece784fcd0.patch
@@ -0,0 +1,65 @@
+From e134d9a6b6332bd085093e9075c949ece784fcd0 Mon Sep 17 00:00:00 2001
+From: sashan <anedvedicky@gmail.com>
+Date: Sat, 18 Jun 2022 00:05:32 +0200
+Subject: [PATCH] Fix PKCS11 module path search
+
+Commit c5c11839e02c7993eb78f2c94c75c10cf93f2195 switched the loading
+of the PKCS#11 module from dlopen() to krb5int_open_plugin(). Because
+krb5int_open_plugin() includes a stat() test, this change has the
+unintended consequence of requiring the module name to be an absolute
+or relative path to the library, not a filename within the dynamic
+linker search path.
+
+Within krb5int_open_plugin(), only stat() the filename on the
+platforms which will use the file type.
+
+[ghudson@mit.edu: adjusted conditionals to call stat() on Windows;
+rewrote commit message]
+
+ticket: 9067 (new)
+tags: pullup
+target_version: 1.20-next
+---
+ src/util/support/plugins.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/src/util/support/plugins.c b/src/util/support/plugins.c
+index 1ff10c354d0..c6a9a21d57c 100644
+--- a/src/util/support/plugins.c
++++ b/src/util/support/plugins.c
+@@ -189,9 +189,10 @@ long KRB5_CALLCONV
+ krb5int_open_plugin (const char *filepath, struct plugin_file_handle **h, struct errinfo *ep)
+ {
+ long err = 0;
+- struct stat statbuf;
+ struct plugin_file_handle *htmp = NULL;
+ int got_plugin = 0;
++#if defined(USE_CFBUNDLE) || defined(_WIN32)
++ struct stat statbuf;
+
+ if (!err) {
+ if (stat (filepath, &statbuf) < 0) {
+@@ -201,6 +202,7 @@ krb5int_open_plugin (const char *filepath, struct plugin_file_handle **h, struct
+ filepath, strerror(err));
+ }
+ }
++#endif
+
+ if (!err) {
+ htmp = calloc (1, sizeof (*htmp)); /* calloc initializes ptrs to NULL */
+@@ -208,11 +210,12 @@ krb5int_open_plugin (const char *filepath, struct plugin_file_handle **h, struct
+ }
+
+ #if USE_DLOPEN
+- if (!err && ((statbuf.st_mode & S_IFMT) == S_IFREG
++ if (!err
+ #if USE_CFBUNDLE
+- || (statbuf.st_mode & S_IFMT) == S_IFDIR
++ && ((statbuf.st_mode & S_IFMT) == S_IFREG
++ || (statbuf.st_mode & S_IFMT) == S_IFDIR)
+ #endif /* USE_CFBUNDLE */
+- )) {
++ ) {
+ void *handle = NULL;
+
+ #if USE_CFBUNDLE