From 50c4c2394610502a9bc56fb8a78aa302885b1952 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Wed, 26 Sep 2018 06:33:53 +0200 Subject: [PATCH] - rel 4; fix openssl 1.1.1 build --- dclib-ssl.patch | 100 ++++++++++++++++++++++++++++++++++++++++++++++++ dclib.spec | 2 +- 2 files changed, 101 insertions(+), 1 deletion(-) diff --git a/dclib-ssl.patch b/dclib-ssl.patch index f124a21..b84b7a8 100644 --- a/dclib-ssl.patch +++ b/dclib-ssl.patch @@ -57,3 +57,103 @@ diff -up dclib-0.3.23/dclib/core/cssl.cpp.openssl dclib-0.3.23/dclib/core/cssl.c if ( method != NULL ) { ctx = SSL_CTX_new(method); +--- dclib-0.3.23/dclib/core/cssl.cpp.org 2018-09-26 06:27:39.330068940 +0200 ++++ dclib-0.3.23/dclib/core/cssl.cpp 2018-09-26 06:31:39.423763528 +0200 +@@ -447,7 +447,7 @@ CString CSSL::EncryptData( CSSLObject * + CString res; + CByteArray bain,baout; + int i,tmplen; +- EVP_CIPHER_CTX ctx; ++ EVP_CIPHER_CTX *ctx; + + // sanity check + if ( !SSLObject || (s.IsEmpty()) ) +@@ -455,8 +455,11 @@ CString CSSL::EncryptData( CSSLObject * + return res; + } + +- EVP_CIPHER_CTX_init(&ctx); +- EVP_EncryptInit(&ctx, EVP_bf_cbc(), SSLObject->m_remotekey, SSLObject->m_remoteiv); ++ ctx = EVP_CIPHER_CTX_new(); ++ if (ctx == NULL) ++ return res; ++ ++ EVP_EncryptInit(ctx, EVP_bf_cbc(), SSLObject->m_remotekey, SSLObject->m_remoteiv); + + // init input array + bain.SetSize(2); +@@ -466,13 +469,13 @@ CString CSSL::EncryptData( CSSLObject * + // init output array + // input size + cipher_block_size for EVP_EncryptUpdate + // plus cipher_block_size for EVP_EncryptFinal +- baout.SetSize( bain.Size() + ( 2 * EVP_CIPHER_CTX_block_size(&ctx) ) ); ++ baout.SetSize( bain.Size() + ( 2 * EVP_CIPHER_CTX_block_size(ctx) ) ); + //printf("CSSL::EncryptData: wrong old size=%lu new size=%lu\n",bain.Size()*2,baout.Size()); + i = baout.Size(); + +- if ( EVP_EncryptUpdate(&ctx, baout.Data(), &i, bain.Data(), bain.Size() ) ) ++ if ( EVP_EncryptUpdate(ctx, baout.Data(), &i, bain.Data(), bain.Size() ) ) + { +- if ( EVP_EncryptFinal(&ctx, baout.Data()+i, &tmplen) ) ++ if ( EVP_EncryptFinal(ctx, baout.Data()+i, &tmplen) ) + { + i+=tmplen; + bain.SetSize(0); +@@ -483,7 +486,7 @@ CString CSSL::EncryptData( CSSLObject * + } + } + +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + + return res; + } +@@ -494,7 +497,7 @@ CString CSSL::DecryptData( CSSLObject * + CString res; + CByteArray bain,baout; + int i,tmplen; +- EVP_CIPHER_CTX ctx; ++ EVP_CIPHER_CTX *ctx; + + // sanity check + if ( !SSLObject || (s.IsEmpty()) ) +@@ -502,22 +505,25 @@ CString CSSL::DecryptData( CSSLObject * + return res; + } + +- EVP_CIPHER_CTX_init(&ctx); +- EVP_DecryptInit(&ctx, EVP_bf_cbc(), SSLObject->m_localkey, SSLObject->m_localiv); ++ ctx = EVP_CIPHER_CTX_new(); ++ if (ctx == NULL) ++ return res; ++ ++ EVP_DecryptInit(ctx, EVP_bf_cbc(), SSLObject->m_localkey, SSLObject->m_localiv); + + bain.SetSize(0); + bain.Append(s.Data(),s.Length()); + + if ( CBase64::Decode(&baout,&bain) > 0 ) + { +- bain.SetSize( baout.Size() + ( 2 * EVP_CIPHER_CTX_block_size(&ctx) ) ); ++ bain.SetSize( baout.Size() + ( 2 * EVP_CIPHER_CTX_block_size(ctx) ) ); + //printf("CSSL::DecryptData: wrong old size=%lu new size=%lu\n",baout.Size()*2,bain.Size()); + i = 0; + +- if ( EVP_DecryptUpdate(&ctx, bain.Data(), &i, baout.Data(), (int)baout.Size() ) ) ++ if ( EVP_DecryptUpdate(ctx, bain.Data(), &i, baout.Data(), (int)baout.Size() ) ) + { + tmplen = 0; +- if ( EVP_DecryptFinal(&ctx, bain.Data()+i, &tmplen) ) ++ if ( EVP_DecryptFinal(ctx, bain.Data()+i, &tmplen) ) + { + i+=tmplen; + res.Set((const char*)bain.Data()+2,i-2); +@@ -525,7 +531,7 @@ CString CSSL::DecryptData( CSSLObject * + } + } + +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + + return res; + } diff --git a/dclib.spec b/dclib.spec index 659ce9f..3a107c0 100644 --- a/dclib.spec +++ b/dclib.spec @@ -6,7 +6,7 @@ Summary: DirectConnect support library for dcgui-qt Summary(pl.UTF-8): Biblioteka obsługująca DirectConnect dla dcgui-qt Name: dclib Version: 0.3.23 -Release: 3 +Release: 4 Epoch: 1 License: GPL Group: Libraries -- 2.43.0