[lfs-patches] r3573 - trunk/ptlib

dj at higgs.linuxfromscratch.org dj at higgs.linuxfromscratch.org
Sun May 28 08:16:48 PDT 2017


Author: dj
Date: Sun May 28 08:16:48 2017
New Revision: 3573

Log:
Add ptlib-2.10.11-openssl-1.1.0-1.patch.

Added:
   trunk/ptlib/ptlib-2.10.11-openssl-1.1.0-1.patch

Added: trunk/ptlib/ptlib-2.10.11-openssl-1.1.0-1.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/ptlib/ptlib-2.10.11-openssl-1.1.0-1.patch	Sun May 28 08:16:48 2017	(r3573)
@@ -0,0 +1,152 @@
+Submitted by:            DJ Lucas (dj_AT_linuxfromscratch_DOT_org)
+Date:                    2017-05-27
+Initial Package Version: 2.10.11
+Upstream Status:         Submitted
+Origin:                  https://git.archlinux.org/svntogit/packages.git/plain/trunk/openssl-1.1.0.patch?h=packages/ptlib
+Description:             Fixes build with OpenSSL-1.1.0.
+
+
+diff -Naurp ptlib-2.10.11-orig/src/ptclib/pssl.cxx ptlib-2.10.11/src/ptclib/pssl.cxx
+--- ptlib-2.10.11-orig/src/ptclib/pssl.cxx	2017-05-27 14:10:00.609612786 -0500
++++ ptlib-2.10.11/src/ptclib/pssl.cxx	2017-05-27 14:11:20.232842073 -0500
+@@ -140,7 +140,7 @@ PFACTORY_CREATE_SINGLETON(PProcessStartu
+ class PSSL_BIO
+ {
+   public:
+-    PSSL_BIO(BIO_METHOD *method = BIO_s_file_internal())
++    PSSL_BIO(const BIO_METHOD *method = BIO_s_file())
+       { bio = BIO_new(method); }
+ 
+     ~PSSL_BIO()
+@@ -627,9 +627,10 @@ PSSLDiffieHellman::PSSLDiffieHellman(con
+   if (dh == NULL)
+     return;
+ 
+-  dh->p = BN_bin2bn(pData, pSize, NULL);
+-  dh->g = BN_bin2bn(gData, gSize, NULL);
+-  if (dh->p != NULL && dh->g != NULL)
++  BIGNUM *p = BN_bin2bn(pData, pSize, NULL);
++  BIGNUM *g = BN_bin2bn(gData, gSize, NULL);
++  DH_set0_pqg(dh, p, NULL, g);
++  if (p != NULL && p != NULL)
+     return;
+ 
+   DH_free(dh);
+@@ -805,13 +806,11 @@ void PSSLContext::Construct(Method metho
+   SSL_METHOD * meth;
+ 
+   switch (method) {
+-    case SSLv3:
+-      meth = SSLv3_method();
+-      break;
+     case TLSv1:
+       meth = TLSv1_method(); 
+       break;
+     case SSLv23:
++    case SSLv3:
+     default:
+       meth = SSLv23_method();
+       break;
+@@ -1117,7 +1116,7 @@ PBoolean PSSLChannel::RawSSLRead(void *
+ //
+ 
+ 
+-#define PSSLCHANNEL(bio)      ((PSSLChannel *)(bio->ptr))
++#define PSSLCHANNEL(bio)      ((PSSLChannel *)BIO_get_data(bio))
+ 
+ extern "C" {
+ 
+@@ -1130,10 +1129,9 @@ typedef long (*lfptr)();
+ 
+ static int Psock_new(BIO * bio)
+ {
+-  bio->init     = 0;
+-  bio->num      = 0;
+-  bio->ptr      = NULL;    // this is really (PSSLChannel *)
+-  bio->flags    = 0;
++  BIO_set_init(bio, 0);
++  BIO_set_data(bio, NULL);
++  BIO_clear_flags(bio, ~0);
+ 
+   return(1);
+ }
+@@ -1144,13 +1142,13 @@ static int Psock_free(BIO * bio)
+   if (bio == NULL)
+     return 0;
+ 
+-  if (bio->shutdown) {
+-    if (bio->init) {
++  if (BIO_get_shutdown(bio)) {
++    if (BIO_get_init(bio)) {
+       PSSLCHANNEL(bio)->Shutdown(PSocket::ShutdownReadAndWrite);
+       PSSLCHANNEL(bio)->Close();
+     }
+-    bio->init  = 0;
+-    bio->flags = 0;
++    BIO_set_init(bio, 0);
++    BIO_clear_flags(bio, ~0);
+   }
+   return 1;
+ }
+@@ -1160,11 +1158,11 @@ static long Psock_ctrl(BIO * bio, int cm
+ {
+   switch (cmd) {
+     case BIO_CTRL_SET_CLOSE:
+-      bio->shutdown = (int)num;
++      BIO_set_shutdown(bio, (int)num);
+       return 1;
+ 
+     case BIO_CTRL_GET_CLOSE:
+-      return bio->shutdown;
++      return BIO_get_shutdown(bio);
+ 
+     case BIO_CTRL_FLUSH:
+       return 1;
+@@ -1239,7 +1237,8 @@ static int Psock_puts(BIO * bio, const c
+ };
+ 
+ 
+-static BIO_METHOD methods_Psock =
++static BIO_METHOD *methods_Psock = NULL;
++/*
+ {
+   BIO_TYPE_SOCKET,
+   "PTLib-PSSLChannel",
+@@ -1261,19 +1260,33 @@ static BIO_METHOD methods_Psock =
+   Psock_free
+ #endif
+ };
+-
++*/
+ 
+ PBoolean PSSLChannel::OnOpen()
+ {
+-  BIO * bio = BIO_new(&methods_Psock);
++  if (methods_Psock == NULL) {
++    methods_Psock = BIO_meth_new(BIO_TYPE_SOCKET | BIO_get_new_index(), "PTLib-PSSLChannel");
++    if (methods_Psock == NULL ||
++        BIO_meth_set_write(methods_Psock, Psock_write) ||
++	BIO_meth_set_read(methods_Psock, Psock_read) ||
++	BIO_meth_set_puts(methods_Psock, Psock_puts) ||
++	BIO_meth_set_gets(methods_Psock, NULL) ||
++	BIO_meth_set_ctrl(methods_Psock, Psock_ctrl) ||
++	BIO_meth_set_create(methods_Psock, Psock_new) ||
++	BIO_meth_set_destroy(methods_Psock, Psock_free)) {
++      SSLerr(SSL_F_SSL_SET_FD,ERR_R_BUF_LIB);
++      return PFalse;
++    }
++  }
++  BIO * bio = BIO_new(methods_Psock);
+   if (bio == NULL) {
+     SSLerr(SSL_F_SSL_SET_FD,ERR_R_BUF_LIB);
+     return PFalse;
+   }
+ 
+   // "Open" then bio
+-  bio->ptr  = this;
+-  bio->init = 1;
++  BIO_set_data(bio, this);
++  BIO_set_init(bio, 1);
+ 
+   SSL_set_bio(ssl, bio, bio);
+   return PTrue;


More information about the patches mailing list