diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-03-20 12:24:01 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-20 13:15:14 +0100 |
commit | baa3d329ac0033ee1914c177347811645e79545d (patch) | |
tree | dd1dd2cc87668ddeba26843f6525d54e7ff1e614 /src/network/ssl | |
parent | d7eb3d128037cefeeb75adf4fe3453cf2fe565eb (diff) |
Fix crash if SSL_get0_next_proto_negotiated() cannot be resolved.
Crash occurs after warnings like:
QSslSocket: cannot call unresolved function SSL_get0_next_proto_negotiated
Task-number: QTBUG-37515
Task-number: QTBUG-33208
Change-Id: I18b803e4709b9d5f6b33717c2ac43179676351a4
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Diffstat (limited to 'src/network/ssl')
-rw-r--r-- | src/network/ssl/qsslsocket_openssl.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 3421154114..bcb2254d11 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -1487,11 +1487,13 @@ void QSslSocketBackendPrivate::continueHandshake() } #if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG) - const unsigned char *proto; - unsigned int proto_len; + const unsigned char *proto = 0; + unsigned int proto_len = 0; q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len); - QByteArray nextProtocol(reinterpret_cast<const char *>(proto), proto_len); - configuration.nextNegotiatedProtocol = nextProtocol; + if (proto_len) + configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast<const char *>(proto), proto_len); + else + configuration.nextNegotiatedProtocol.clear(); configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status; #endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ... |