Blame SOURCES/0035-Modify-DH-enablement-patch-to-build-with-OpenSSL-1.1.patch

d7fdbd
From 6c8dd87f311e411bcb1c72c1c780497881a5621c Mon Sep 17 00:00:00 2001
d7fdbd
From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
d7fdbd
Date: Mon, 4 Sep 2017 11:32:03 +0200
d7fdbd
Subject: [PATCH 35/59] Modify DH enablement patch to build with OpenSSL 1.1
d7fdbd
d7fdbd
---
d7fdbd
 ssl.c | 41 ++++++++++++++++++++++++++++++++++++++---
d7fdbd
 1 file changed, 38 insertions(+), 3 deletions(-)
d7fdbd
d7fdbd
diff --git a/ssl.c b/ssl.c
d7fdbd
index ba8a613..09ec96a 100644
d7fdbd
--- a/ssl.c
d7fdbd
+++ b/ssl.c
d7fdbd
@@ -88,19 +88,54 @@ static struct mystr debug_str;
d7fdbd
 }
d7fdbd
 #endif
d7fdbd
 
d7fdbd
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
d7fdbd
+int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
d7fdbd
+{
d7fdbd
+  /* If the fields p and g in d are NULL, the corresponding input
d7fdbd
+   * parameters MUST be non-NULL.  q may remain NULL.
d7fdbd
+   */
d7fdbd
+  if ((dh->p == NULL && p == NULL)
d7fdbd
+      || (dh->g == NULL && g == NULL))
d7fdbd
+    return 0;
d7fdbd
+
d7fdbd
+  if (p != NULL) {
d7fdbd
+    BN_free(dh->p);
d7fdbd
+    dh->p = p;
d7fdbd
+  }
d7fdbd
+  if (q != NULL) {
d7fdbd
+    BN_free(dh->q);
d7fdbd
+    dh->q = q;
d7fdbd
+  }
d7fdbd
+  if (g != NULL) {
d7fdbd
+    BN_free(dh->g);
d7fdbd
+    dh->g = g;
d7fdbd
+  }
d7fdbd
+
d7fdbd
+  if (q != NULL) {
d7fdbd
+    dh->length = BN_num_bits(q);
d7fdbd
+  }
d7fdbd
+
d7fdbd
+  return 1;
d7fdbd
+}
d7fdbd
+#endif
d7fdbd
+
d7fdbd
 #if !defined(DH_get_dh)
d7fdbd
   // Grab DH parameters
d7fdbd
   DH *
d7fdbd
   DH_get_dh(int size)
d7fdbd
   {
d7fdbd
+    BIGNUM *g = NULL;
d7fdbd
+    BIGNUM *p = NULL;
d7fdbd
     DH *dh = DH_new();
d7fdbd
     if (!dh) {
d7fdbd
       return NULL;
d7fdbd
     }
d7fdbd
-    dh->p = DH_get_prime(match_dh_bits(size));
d7fdbd
-    BN_dec2bn(&dh->g, "2");
d7fdbd
-    if (!dh->p || !dh->g)
d7fdbd
+    p = DH_get_prime(match_dh_bits(size));
d7fdbd
+    BN_dec2bn(&g, "2");
d7fdbd
+    if (!p || !g || !DH_set0_pqg(dh, p, NULL, g))
d7fdbd
     {
d7fdbd
+      BN_free(g);
d7fdbd
+      BN_free(p);
d7fdbd
       DH_free(dh);
d7fdbd
       return NULL;
d7fdbd
     }
d7fdbd
-- 
d7fdbd
2.14.4
d7fdbd