From 317e2c9199da58879b083b5561a69612ae0a4a41 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Wed, 30 Jun 2010 12:09:05 +0200 Subject: SSL backend: correct ordering of root CA certificates in the store Some CAs have several root certificates with the same SubjectInfo, but different expiration date. This means that OpenSSL needs to choose the valid root certificate over the expired ones when verifying a certificate chain. Apparently, the certs added to the store first are the ones that get used first, so we add the expired ones at the end. Reviewed-by: Thiago Macieira Task-number: QTBUG-11664 --- src/network/ssl/qsslsocket_openssl.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index fa26fe8..30428ff 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -299,8 +299,20 @@ init_context: } // Add all our CAs to this store. - foreach (const QSslCertificate &caCertificate, q->caCertificates()) + QList expiredCerts; + foreach (const QSslCertificate &caCertificate, q->caCertificates()) { + // add expired certs later, so that the + // valid ones are used before the expired ones + if (! caCertificate.isValid()) { + expiredCerts.append(caCertificate); + } else { + q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle()); + } + } + // now add the expired certs + foreach (const QSslCertificate &caCertificate, expiredCerts) { q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle()); + } // Register a custom callback to get all verification errors. X509_STORE_set_verify_cb_func(ctx->cert_store, q_X509Callback); @@ -597,7 +609,7 @@ QList QSslSocketPrivate::systemCaCertificates() if(!pc) break; QByteArray der((const char *)(pc->pbCertEncoded), static_cast(pc->cbCertEncoded)); - QSslCertificate cert(der,QSsl::Der); + QSslCertificate cert(der, QSsl::Der); systemCerts.append(cert); } ptrCertCloseStore(hSystemStore, 0); -- cgit v0.12 From 08e2c776bf2ce6976276bcdcce342ae8c4675565 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Wed, 9 Jun 2010 13:08:32 +0200 Subject: Fix regression in popup behavior on Windows Popups without a parent would unintentionally deactivate their parents following af7d2b2127d. In order to avoid this, we do not activate popups when there is an active application window. System tray popups are still activated. Reviewed-by: denis Task-number: QTBUG-11061 --- src/gui/kernel/qwidget_win.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp index 9c65aa0..0f05c6b 100644 --- a/src/gui/kernel/qwidget_win.cpp +++ b/src/gui/kernel/qwidget_win.cpp @@ -1167,7 +1167,7 @@ void QWidgetPrivate::show_sys() // This is to resolve the problem where popups are opened from the // system tray and not being implicitly activated if (q->windowType() == Qt::Popup && - (!q->parentWidget() || !q->parentWidget()->isActiveWindow())) + !q->parentWidget() && !qApp->activeWindow()) q->activateWindow(); } -- cgit v0.12 From 84756e043fa2bd9c83b24abffb280290ad3667cd Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Wed, 30 Jun 2010 16:10:59 +0200 Subject: Crash while changing the windows flags from a Qt::Drawer window on Cocoa The crash was caused while checking the visibility of the toolbar inside a native cocoa window. There is no toolbar for a drawer window. Task-number: QTBUG-11138 Reviewed-by: Denis --- src/gui/kernel/qwidget_mac.mm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index a9bb691..e57ec77 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -2861,9 +2861,11 @@ void QWidgetPrivate::setParent_sys(QWidget *parent, Qt::WindowFlags f) } if (wasWindow) { oldToolbar = [oldWindow toolbar]; - [oldToolbar retain]; - oldToolbarVisible = [oldToolbar isVisible]; - [oldWindow setToolbar:nil]; + if (oldToolbar) { + [oldToolbar retain]; + oldToolbarVisible = [oldToolbar isVisible]; + [oldWindow setToolbar:nil]; + } } #endif } -- cgit v0.12