From 0b58dfdee204ec2a916f03de427b4dd7eb05ce27 Mon Sep 17 00:00:00 2001 From: wangyunjia Date: Tue, 26 Sep 2023 00:06:44 +0800 Subject: [PATCH] backport patch for glibc-networking Signed-off-by: wangyunjia --- backport-Fix-probing-of-C_GetInterface.patch | 45 ++++++++++++++++++++ p11-kit.spec | 7 ++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 backport-Fix-probing-of-C_GetInterface.patch diff --git a/backport-Fix-probing-of-C_GetInterface.patch b/backport-Fix-probing-of-C_GetInterface.patch new file mode 100644 index 0000000..2cbc79c --- /dev/null +++ b/backport-Fix-probing-of-C_GetInterface.patch @@ -0,0 +1,45 @@ +From d1d4b0ac316a27c739ff91e6c4153f1154e96e5a Mon Sep 17 00:00:00 2001 +From: Xi Ruoyao +Date: Thu, 27 Jul 2023 12:18:15 +0800 +Subject: [PATCH] Fix probing of C_GetInterface + +`p11_dl_symbol (dl, "C_GetInterface")` uses dlsym() to find +C_GetInterface in the loaded pkcs11 module. For legacy (pre-3.0) pkcs11 +modules, C_GetInterface is not defined in the module. But according to +the documentation of dlsym(): + + The search performed by dlsym() is breadth first through the + dependency tree of these shared objects. + +So if a pkcs11 module links to libp11-kit.so, the C_GetInterface +implementation in libp11-kit.so itself will be found. This +C_GetInterface will return the metadata of p11-kit-proxy.so, causing +"Refuse to load the p11-kit-proxy.so as a registered module". + +To solve the issue, if p11_dl_symbol() returns the C_GetInterface in +libp11-kit.so itself, we should ignore it and continue trying +C_GetFunctionList. +--- + p11-kit/modules.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/p11-kit/modules.c b/p11-kit/modules.c +index 8ad88ae..da0a7f0 100644 +--- a/p11-kit/modules.c ++++ b/p11-kit/modules.c +@@ -383,6 +383,12 @@ dlopen_and_get_function_list (Module *mod, + mod->loaded_module = dl; + + gi = p11_dl_symbol (dl, "C_GetInterface"); ++ ++#ifndef OS_WIN32 ++ if (gi == C_GetInterface) ++ gi = NULL; ++#endif ++ + if (gi) { + /* Get the default standard interface */ + rv = gi ((unsigned char *)"PKCS 11", NULL, &interface, 0); +-- +2.27.0 + diff --git a/p11-kit.spec b/p11-kit.spec index cc70d09..3609aae 100644 --- a/p11-kit.spec +++ b/p11-kit.spec @@ -1,6 +1,6 @@ Name: p11-kit Version: 0.25.0 -Release: 1 +Release: 2 Summary: Provides a way to load and enumerate PKCS#11 modules. License: BSD URL: http://p11-glue.freedesktop.org/p11-kit.html @@ -8,6 +8,8 @@ URL: http://p11-glue.freedesktop.org/p11-kit.html Source0: https://github.com/p11-glue/p11-kit/releases/download/%{version}/%{name}-%{version}.tar.xz Source1: p11-kit-client.service +Patch0: backport-Fix-probing-of-C_GetInterface.patch + BuildRequires: gcc libtasn1-devel >= 2.3 libffi-devel gtk-doc systemd-devel pkgconfig(glib-2.0) libxslt BuildRequires: bash-completion @@ -130,6 +132,9 @@ fi %{_datadir}/bash-completion/completions/trust %changelog +* Tue Sep 26 2023 wangyunjia - 0.25.0-2 +- backport patch for glib-networking + * Thu Jul 20 2023 wangyunjia - 0.25.0-1 - update to 0.25.0