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; -- http://lists.linuxfromscratch.org/listinfo/patches FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page