diff options
author | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2020-12-17 06:42:11 +0100 |
---|---|---|
committer | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2021-02-10 19:34:46 +0200 |
commit | cef75f337ce1e0cace2601089901f00ea3ddb72a (patch) | |
tree | 82fceb7aef9ea1d0cfb68004f17d3202f00f1dc9 /src | |
parent | 651cfe5c44f39e66539ba3fd999671fb94b47a77 (diff) |
QSslCertificate::operator == - cleanup error queue
Another case when an OpenSSL's call can dump some errors into the shared
error queue discovered. An invalid certificate with non-null X509 * may
result in several errors appended to the queue.
Change-Id: I1278b371bd1edf2d656760c371bfb6da5dcab6ec
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
(cherry picked from commit 3bc398f76669c2532ae6e3f163f994feb7e6a0bf)
Diffstat (limited to 'src')
-rw-r--r-- | src/network/ssl/qsslcertificate_openssl.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/network/ssl/qsslcertificate_openssl.cpp b/src/network/ssl/qsslcertificate_openssl.cpp index c0fa0c288c..17c987f415 100644 --- a/src/network/ssl/qsslcertificate_openssl.cpp +++ b/src/network/ssl/qsslcertificate_openssl.cpp @@ -65,10 +65,17 @@ bool QSslCertificate::operator==(const QSslCertificate &other) const { if (d == other.d) return true; + if (d->null && other.d->null) return true; - if (d->x509 && other.d->x509) - return q_X509_cmp(d->x509, other.d->x509) == 0; + + if (d->x509 && other.d->x509) { + const int ret = q_X509_cmp(d->x509, other.d->x509); + if (ret >= -1 && ret <= 1) + return ret == 0; + QSslSocketBackendPrivate::logAndClearErrorQueue(); + } + return false; } |