Blame SOURCES/0013-EP11-Support-EP11-host-library-version-4.patch

1f6f0c
From 4cad40e594b916ef3416dd574304b2c60138a6fe Mon Sep 17 00:00:00 2001
1f6f0c
From: Ingo Franzki <ifranzki@linux.ibm.com>
1f6f0c
Date: Mon, 19 Sep 2022 09:01:13 +0200
1f6f0c
Subject: [PATCH 13/34] EP11: Support EP11 host library version 4
1f6f0c
1f6f0c
Try to load the EP11 host library version 4 (libep11.so.4) first,
1f6f0c
but fall back to version 3, 2, 1, or even the un-versioned shared library.
1f6f0c
1f6f0c
Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com>
1f6f0c
---
1f6f0c
 usr/lib/ep11_stdll/ep11_specific.c           | 15 ++++++++++++---
1f6f0c
 usr/sbin/pkcsep11_migrate/pkcsep11_migrate.c | 11 +++++++++--
1f6f0c
 usr/sbin/pkcsep11_session/pkcsep11_session.c | 11 +++++++++--
1f6f0c
 3 files changed, 30 insertions(+), 7 deletions(-)
1f6f0c
1f6f0c
diff --git a/usr/lib/ep11_stdll/ep11_specific.c b/usr/lib/ep11_stdll/ep11_specific.c
1f6f0c
index 1dbfe0f5..304989fc 100644
1f6f0c
--- a/usr/lib/ep11_stdll/ep11_specific.c
1f6f0c
+++ b/usr/lib/ep11_stdll/ep11_specific.c
1f6f0c
@@ -66,6 +66,7 @@
1f6f0c
 #include "pkey_utils.h"
1f6f0c
 
1f6f0c
 #define EP11SHAREDLIB_NAME "OCK_EP11_LIBRARY"
1f6f0c
+#define EP11SHAREDLIB_V4 "libep11.so.4"
1f6f0c
 #define EP11SHAREDLIB_V3 "libep11.so.3"
1f6f0c
 #define EP11SHAREDLIB_V2 "libep11.so.2"
1f6f0c
 #define EP11SHAREDLIB_V1 "libep11.so.1"
1f6f0c
@@ -2209,9 +2210,17 @@ static void *ep11_load_host_lib()
1f6f0c
         return lib_ep11;
1f6f0c
     }
1f6f0c
 
1f6f0c
-    ep11_lib_name = EP11SHAREDLIB_V3;
1f6f0c
+    ep11_lib_name = EP11SHAREDLIB_V4;
1f6f0c
     lib_ep11 = dlopen(ep11_lib_name, DLOPEN_FLAGS);
1f6f0c
 
1f6f0c
+    if (lib_ep11 == NULL) {
1f6f0c
+        TRACE_DEVEL("%s Error loading shared library '%s', trying '%s'\n",
1f6f0c
+                    __func__, EP11SHAREDLIB_V4, EP11SHAREDLIB_V3);
1f6f0c
+        /* Try version 3 instead */
1f6f0c
+        ep11_lib_name = EP11SHAREDLIB_V3;
1f6f0c
+        lib_ep11 = dlopen(ep11_lib_name, DLOPEN_FLAGS);
1f6f0c
+    }
1f6f0c
+
1f6f0c
     if (lib_ep11 == NULL) {
1f6f0c
         TRACE_DEVEL("%s Error loading shared library '%s', trying '%s'\n",
1f6f0c
                     __func__, EP11SHAREDLIB_V3, EP11SHAREDLIB_V2);
1f6f0c
@@ -2239,9 +2248,9 @@ static void *ep11_load_host_lib()
1f6f0c
     if (lib_ep11 == NULL) {
1f6f0c
         errstr = dlerror();
1f6f0c
         OCK_SYSLOG(LOG_ERR,
1f6f0c
-                   "%s: Error loading shared library '%s[.3|.2|.1]' [%s]\n",
1f6f0c
+                   "%s: Error loading shared library '%s[.4][.3|.2|.1]' [%s]\n",
1f6f0c
                    __func__, EP11SHAREDLIB, errstr);
1f6f0c
-        TRACE_ERROR("%s Error loading shared library '%s[.3|.2|.1]' [%s]\n",
1f6f0c
+        TRACE_ERROR("%s Error loading shared library '%s[.4][.3|.2|.1]' [%s]\n",
1f6f0c
                     __func__, EP11SHAREDLIB, errstr);
1f6f0c
         return NULL;
1f6f0c
     }
1f6f0c
diff --git a/usr/sbin/pkcsep11_migrate/pkcsep11_migrate.c b/usr/sbin/pkcsep11_migrate/pkcsep11_migrate.c
1f6f0c
index 4a42a085..f80cfa9f 100644
1f6f0c
--- a/usr/sbin/pkcsep11_migrate/pkcsep11_migrate.c
1f6f0c
+++ b/usr/sbin/pkcsep11_migrate/pkcsep11_migrate.c
1f6f0c
@@ -30,6 +30,7 @@
1f6f0c
 #include "pin_prompt.h"
1f6f0c
 
1f6f0c
 #define EP11SHAREDLIB_NAME "OCK_EP11_LIBRARY"
1f6f0c
+#define EP11SHAREDLIB_V4 "libep11.so.4"
1f6f0c
 #define EP11SHAREDLIB_V3 "libep11.so.3"
1f6f0c
 #define EP11SHAREDLIB_V2 "libep11.so.2"
1f6f0c
 #define EP11SHAREDLIB_V1 "libep11.so.1"
1f6f0c
@@ -424,9 +425,15 @@ static void *ep11_load_host_lib()
1f6f0c
         return lib_ep11;
1f6f0c
     }
1f6f0c
 
1f6f0c
-    ep11_lib_name = EP11SHAREDLIB_V3;
1f6f0c
+    ep11_lib_name = EP11SHAREDLIB_V4;
1f6f0c
     lib_ep11 = dlopen(ep11_lib_name, DLOPEN_FLAGS);
1f6f0c
 
1f6f0c
+    if (lib_ep11 == NULL) {
1f6f0c
+        /* Try version 3 instead */
1f6f0c
+        ep11_lib_name = EP11SHAREDLIB_V3;
1f6f0c
+        lib_ep11 = dlopen(ep11_lib_name, DLOPEN_FLAGS);
1f6f0c
+    }
1f6f0c
+
1f6f0c
     if (lib_ep11 == NULL) {
1f6f0c
         /* Try version 2 instead */
1f6f0c
         ep11_lib_name = EP11SHAREDLIB_V2;
1f6f0c
@@ -447,7 +454,7 @@ static void *ep11_load_host_lib()
1f6f0c
 
1f6f0c
     if (lib_ep11 == NULL) {
1f6f0c
         errstr = dlerror();
1f6f0c
-        fprintf(stderr, "Error loading shared library '%s[.3|.2|.1]' [%s]\n",
1f6f0c
+        fprintf(stderr, "Error loading shared library '%s[.4|.3|.2|.1]' [%s]\n",
1f6f0c
                 EP11SHAREDLIB, errstr);
1f6f0c
         return NULL;
1f6f0c
     }
1f6f0c
diff --git a/usr/sbin/pkcsep11_session/pkcsep11_session.c b/usr/sbin/pkcsep11_session/pkcsep11_session.c
1f6f0c
index 0c210135..b7b9e9c4 100644
1f6f0c
--- a/usr/sbin/pkcsep11_session/pkcsep11_session.c
1f6f0c
+++ b/usr/sbin/pkcsep11_session/pkcsep11_session.c
1f6f0c
@@ -35,6 +35,7 @@
1f6f0c
 #include "pin_prompt.h"
1f6f0c
 
1f6f0c
 #define EP11SHAREDLIB_NAME "OCK_EP11_LIBRARY"
1f6f0c
+#define EP11SHAREDLIB_V4 "libep11.so.4"
1f6f0c
 #define EP11SHAREDLIB_V3 "libep11.so.3"
1f6f0c
 #define EP11SHAREDLIB_V2 "libep11.so.2"
1f6f0c
 #define EP11SHAREDLIB_V1 "libep11.so.1"
1f6f0c
@@ -1050,9 +1051,15 @@ static void *ep11_load_host_lib()
1f6f0c
         return lib_ep11;
1f6f0c
     }
1f6f0c
 
1f6f0c
-    ep11_lib_name = EP11SHAREDLIB_V3;
1f6f0c
+    ep11_lib_name = EP11SHAREDLIB_V4;
1f6f0c
     lib_ep11 = dlopen(ep11_lib_name, DLOPEN_FLAGS);
1f6f0c
 
1f6f0c
+    if (lib_ep11 == NULL) {
1f6f0c
+        /* Try version 3 instead */
1f6f0c
+        ep11_lib_name = EP11SHAREDLIB_V3;
1f6f0c
+        lib_ep11 = dlopen(ep11_lib_name, DLOPEN_FLAGS);
1f6f0c
+    }
1f6f0c
+
1f6f0c
     if (lib_ep11 == NULL) {
1f6f0c
         /* Try version 2 instead */
1f6f0c
         ep11_lib_name = EP11SHAREDLIB_V2;
1f6f0c
@@ -1073,7 +1080,7 @@ static void *ep11_load_host_lib()
1f6f0c
 
1f6f0c
     if (lib_ep11 == NULL) {
1f6f0c
         errstr = dlerror();
1f6f0c
-        fprintf(stderr, "Error loading shared library '%s[.3|.2|.1]' [%s]\n",
1f6f0c
+        fprintf(stderr, "Error loading shared library '%s[.4|.3|.2|.1]' [%s]\n",
1f6f0c
                 EP11SHAREDLIB, errstr);
1f6f0c
         return NULL;
1f6f0c
     }
1f6f0c
-- 
1f6f0c
2.16.2.windows.1
1f6f0c