diff options
Diffstat (limited to 'kde-base/kdelibs/files/kdelibs-4.4.5-hostname.patch')
-rw-r--r-- | kde-base/kdelibs/files/kdelibs-4.4.5-hostname.patch | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/kde-base/kdelibs/files/kdelibs-4.4.5-hostname.patch b/kde-base/kdelibs/files/kdelibs-4.4.5-hostname.patch deleted file mode 100644 index d4f7db5c1c40..000000000000 --- a/kde-base/kdelibs/files/kdelibs-4.4.5-hostname.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff -ruN kdelibs-4.4.5.orig/kio/kio/tcpslavebase.cpp kdelibs-4.4.5/kio/kio/tcpslavebase.cpp ---- kdelibs-4.4.5.orig/kio/kio/tcpslavebase.cpp 2010-04-29 21:52:23.000000000 +0200 -+++ kdelibs-4.4.5/kio/kio/tcpslavebase.cpp 2011-03-09 10:31:37.000000000 +0100 -@@ -490,8 +490,6 @@ - // domain<->certificate matching here. - d->sslErrors = d->socket.sslErrors(); - QSslCertificate peerCert = d->socket.peerCertificateChain().first(); -- QStringList domainPatterns(peerCert.subjectInfo(QSslCertificate::CommonName)); -- domainPatterns += peerCert.alternateSubjectNames().values(QSsl::DnsEntry); - QRegExp domainMatcher(QString(), Qt::CaseInsensitive, QRegExp::Wildcard); - QMutableListIterator<KSslError> it(d->sslErrors); - while (it.hasNext()) { -@@ -499,16 +498,29 @@ - // *in the case of HostNameMismatch*. A HostNameMismatch, however, will always - // be an error of the peer certificate so we just don't check the error's - // certificate(). -- if (it.next().error() != KSslError::HostNameMismatch) { -- continue; -- } -- foreach (const QString &dp, domainPatterns) { -- domainMatcher.setPattern(dp); -- if (domainMatcher.exactMatch(d->host)) { -- it.remove(); -- } -+ -+ // Remove all HostNameMismatch, we have to redo name checking later. -+ if (it.next().error() == KSslError::HostNameMismatch) { -+ it.remove(); - } - } -+ // Redo name checking here and (re-)insert HostNameMismatch to sslErrors if -+ // host name does not match any of the names in server certificate. -+ // QSslSocket may not report HostNameMismatch error, when server -+ // certificate was issued for the IP we are connecting to. -+ QStringList domainPatterns(peerCert.subjectInfo(QSslCertificate::CommonName)); -+ domainPatterns += peerCert.alternateSubjectNames().values(QSsl::DnsEntry); -+ bool names_match = false; -+ foreach (const QString &dp, domainPatterns) { -+ domainMatcher.setPattern(dp); -+ if (domainMatcher.exactMatch(d->host)) { -+ names_match = true; -+ break; -+ } -+ } -+ if (!names_match) { -+ d->sslErrors.insert(0, KSslError(KSslError::HostNameMismatch, peerCert)); -+ } - - // The app side needs the metadata now for the SSL error dialog (if any) but - // the same metadata will be needed later, too. When "later" arrives the slave |