diff Resources/Patches/openssl-1.1.1f.patch @ 3805:cdb429340112

Fix OpenSSL initialization on Linux Standard Base
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 02 Apr 2020 16:45:20 +0200
parents e9834343d327
children
line wrap: on
line diff
--- a/Resources/Patches/openssl-1.1.1f.patch	Thu Apr 02 14:50:49 2020 +0200
+++ b/Resources/Patches/openssl-1.1.1f.patch	Thu Apr 02 16:45:20 2020 +0200
@@ -1,12 +1,19 @@
 diff -urEb openssl-1.1.1f.orig/crypto/rand/rand_unix.c openssl-1.1.1f/crypto/rand/rand_unix.c
---- openssl-1.1.1f.orig/crypto/rand/rand_unix.c	2020-04-02 13:14:23.195439492 +0200
-+++ openssl-1.1.1f/crypto/rand/rand_unix.c	2020-04-02 13:15:18.079473769 +0200
-@@ -387,7 +387,7 @@
- #  endif
- 
-     /* Linux supports this since version 3.17 */
--#  if defined(__linux) && defined(__NR_getrandom)
-+#  if defined(__linux) && defined(__NR_getrandom) && !defined(__LSB_VERSION__)
-     return syscall(__NR_getrandom, buf, buflen, 0);
- #  elif (defined(__FreeBSD__) || defined(__NetBSD__)) && defined(KERN_ARND)
-     return sysctl_random(buf, buflen);
+--- openssl-1.1.1f.orig/crypto/rand/rand_unix.c	2020-03-31 14:17:45.000000000 +0200
++++ openssl-1.1.1f/crypto/rand/rand_unix.c	2020-04-02 16:38:56.091240847 +0200
+@@ -445,6 +445,7 @@
+              * system call and this should always succeed which renders
+              * this alternative but essentially identical source moot.
+              */
++#if !defined(__LSB_VERSION__)  // "syscall()" is not available in LSB
+             if (uname(&un) == 0) {
+                 kernel[0] = atoi(un.release);
+                 p = strchr(un.release, '.');
+@@ -455,6 +456,7 @@
+                     return 0;
+                 }
+             }
++#endif
+             /* Open /dev/random and wait for it to be readable */
+             if ((fd = open(DEVRANDOM_WAIT, O_RDONLY)) != -1) {
+                 if (DEVRANDM_WAIT_USE_SELECT && fd < FD_SETSIZE) {