svn commit: r415856 - in head/net/qt4-network: . files

Kurt Jaeger pi at FreeBSD.org
Wed May 25 19:14:53 UTC 2016


Author: pi
Date: Wed May 25 19:14:52 2016
New Revision: 415856
URL: https://svnweb.freebsd.org/changeset/ports/415856

Log:
  net/qt4-network: fix openssl runtime linking
  
  The PCBSD community discovered an issue with OpenSSL runtime linking, where
  the OS bundled OpenSSL libraries are being loaded despite the user having
  installed and selected a PORTS OpenSSL installation. The patch provided in
  [1] resolves this by hard-coding the OpenSSL path to the default PREFIX of
  /usr/local.
  
  References:
   [1] https://mail.kde.org/pipermail/kde-freebsd/2015-November/020535.html
  PR:		209317
  Submitted by:	Kris Moore <kris at pcbsd.org>

Added:
  head/net/qt4-network/files/
  head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl.cpp   (contents, props changed)
  head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl__symbols.cpp   (contents, props changed)
Modified:
  head/net/qt4-network/Makefile

Modified: head/net/qt4-network/Makefile
==============================================================================
--- head/net/qt4-network/Makefile	Wed May 25 18:59:09 2016	(r415855)
+++ head/net/qt4-network/Makefile	Wed May 25 19:14:52 2016	(r415856)
@@ -9,11 +9,13 @@ PKGNAMEPREFIX=	qt4-
 MAINTAINER=	kde at FreeBSD.org
 COMMENT=	Qt network module
 
+LICENSE=	GPLv3 LGPL21 LGPL3 GFDL
+LICENSE_COMB=	dual
+
 RUN_DEPENDS=	${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss
 
 USE_QT4=	qmake_build moc_build rcc_build corelib
 QT_DIST=	yes
-
 HAS_CONFIGURE=	yes
 USE_LDCONFIG=	${PREFIX}/${QT_LIBDIR_REL}
 USE_OPENSSL=	yes
@@ -52,6 +54,7 @@ post-configure:
 			-E -e 's|(.*location=).*uic|\1${PREFIX}/${QT_BINDIR_REL}/${UIC:T}|g' \
 		${WRKSRC}/lib/pkgconfig/QtNetwork.pc
 	${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
-		${WRKSRC}/src/network/ssl/qsslsocket_openssl.cpp
+		${WRKSRC}/src/network/ssl/qsslsocket_openssl.cpp \
+		${WRKSRC}/src/network/ssl/qsslsocket_openssl_symbols.cpp
 
 .include <bsd.port.mk>

Added: head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl.cpp	Wed May 25 19:14:52 2016	(r415856)
@@ -0,0 +1,21 @@
+--- src/network/ssl/qsslsocket_openssl.cpp.orig	2015-05-07 14:14:44 UTC
++++ src/network/ssl/qsslsocket_openssl.cpp
+@@ -267,15 +267,14 @@ init_context:
+ #endif
+         break;
+     case QSsl::SslV3:
+-        ctx = q_SSL_CTX_new(client ? q_SSLv3_client_method() : q_SSLv3_server_method());
++        ctx = 0; // SSL 3 not supported by the system, but chosen deliberately -> error
+         break;
+-    case QSsl::SecureProtocols: // SslV2 will be disabled below
+-    case QSsl::TlsV1SslV3: // SslV2 will be disabled below
+     case QSsl::AnyProtocol:
+-    default:
+         ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method());
+         break;
+     case QSsl::TlsV1:
++    case QSsl::SecureProtocols:
++    default:
+         ctx = q_SSL_CTX_new(client ? q_TLSv1_client_method() : q_TLSv1_server_method());
+         break;
+     }

Added: head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl__symbols.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/qt4-network/files/patch-src_network_ssl_qsslsocket__openssl__symbols.cpp	Wed May 25 19:14:52 2016	(r415856)
@@ -0,0 +1,25 @@
+--- src/network/ssl/qsslsocket_openssl_symbols.cpp.orig	2015-05-07 14:14:44 UTC
++++ src/network/ssl/qsslsocket_openssl_symbols.cpp
+@@ -511,9 +511,9 @@ static QPair<QLibrary*, QLibrary*> loadO
+     libcrypto->setLoadHints(libcrypto->loadHints() | QLibrary::ImprovedSearchHeuristics);
+ #elif defined(SHLIB_VERSION_NUMBER)
+     // first attempt: the canonical name is libssl.so.<SHLIB_VERSION_NUMBER>
+-    libssl->setFileNameAndVersion(QLatin1String("ssl"), QLatin1String(SHLIB_VERSION_NUMBER));
++    libssl->setFileNameAndVersion(QLatin1String("/usr/local/lib/libssl"), QLatin1String(SHLIB_VERSION_NUMBER));
+     libssl->setLoadHints(QLibrary::ImprovedSearchHeuristics);
+-    libcrypto->setFileNameAndVersion(QLatin1String("crypto"), QLatin1String(SHLIB_VERSION_NUMBER));
++    libcrypto->setFileNameAndVersion(QLatin1String("/usr/local/lib/libcrypto"), QLatin1String(SHLIB_VERSION_NUMBER));
+     libcrypto->setLoadHints(libcrypto->loadHints() | QLibrary::ImprovedSearchHeuristics);
+     if (libcrypto->load() && libssl->load()) {
+         // libssl.so.<SHLIB_VERSION_NUMBER> and libcrypto.so.<SHLIB_VERSION_NUMBER> found
+@@ -525,8 +525,8 @@ static QPair<QLibrary*, QLibrary*> loadO
+ #endif
+ 
+     // second attempt: find the development files libssl.so and libcrypto.so
+-    libssl->setFileNameAndVersion(QLatin1String("ssl"), -1);
+-    libcrypto->setFileNameAndVersion(QLatin1String("crypto"), -1);
++    libssl->setFileNameAndVersion(QLatin1String("/usr/local/lib/libssl"), -1);
++    libcrypto->setFileNameAndVersion(QLatin1String("/usr/local/lib/libcrypto"), -1);
+     if (libcrypto->load() && libssl->load()) {
+         // libssl.so.0 and libcrypto.so.0 found
+         return pair;


More information about the svn-ports-all mailing list