79734ca
diff -pruN kdelibs-3.5.4.orig/kio/kssl/kopenssl.cc kdelibs-3.5.4/kio/kssl/kopenssl.cc
79734ca
--- kdelibs-3.5.4.orig/kio/kssl/kopenssl.cc	2009-08-31 20:50:12.000000000 +0200
79734ca
+++ kdelibs-3.5.4/kio/kssl/kopenssl.cc	2009-08-31 21:46:47.000000000 +0200
79734ca
@@ -196,6 +196,7 @@ static int (*K_X509_NAME_add_entry_by_tx
79734ca
 static X509_NAME *(*K_X509_NAME_new)() = 0L;
79734ca
 static int (*K_X509_REQ_set_subject_name)(X509_REQ*,X509_NAME*) = 0L;
79734ca
 static unsigned char *(*K_ASN1_STRING_data)(ASN1_STRING*) = 0L;
79734ca
+static int (*K_ASN1_STRING_length)(ASN1_STRING*) = 0L;
79734ca
 static STACK_OF(SSL_CIPHER) *(*K_SSL_get_ciphers)(const SSL *ssl) = 0L;
79734ca
 
79734ca
 #endif
79734ca
@@ -498,6 +499,7 @@ KConfig *cfg;
79734ca
       K_X509_NAME_new = (X509_NAME *(*)()) _cryptoLib->symbol("X509_NAME_new");
79734ca
       K_X509_REQ_set_subject_name = (int (*)(X509_REQ*,X509_NAME*)) _cryptoLib->symbol("X509_REQ_set_subject_name");
79734ca
       K_ASN1_STRING_data = (unsigned char *(*)(ASN1_STRING*)) _cryptoLib->symbol("ASN1_STRING_data");
79734ca
+      K_ASN1_STRING_length = (int (*)(ASN1_STRING*)) _cryptoLib->symbol("ASN1_STRING_length");
79734ca
 #endif
79734ca
    }
79734ca
 
79734ca
@@ -1549,6 +1551,13 @@ unsigned char *KOpenSSLProxy::ASN1_STRIN
79734ca
    return 0L;
79734ca
 }
79734ca
 
79734ca
+
79734ca
+int KOpenSSLProxy::ASN1_STRING_length(ASN1_STRING *x) {
79734ca
+   if (K_ASN1_STRING_length) return (K_ASN1_STRING_length)(x);
79734ca
+   return 0L;
79734ca
+}
79734ca
+
79734ca
+
79734ca
 STACK_OF(SSL_CIPHER) *KOpenSSLProxy::SSL_get_ciphers(const SSL* ssl) {
79734ca
   if (K_SSL_get_ciphers) return (K_SSL_get_ciphers)(ssl);
79734ca
   return 0L;
79734ca
diff -pruN kdelibs-3.5.4.orig/kio/kssl/kopenssl.h kdelibs-3.5.4/kio/kssl/kopenssl.h
79734ca
--- kdelibs-3.5.4.orig/kio/kssl/kopenssl.h	2006-07-22 10:16:39.000000000 +0200
79734ca
+++ kdelibs-3.5.4/kio/kssl/kopenssl.h	2009-08-31 21:46:47.000000000 +0200
79734ca
@@ -622,6 +622,11 @@ public:
79734ca
    unsigned char *ASN1_STRING_data(ASN1_STRING *x);
79734ca
 
79734ca
    /*
79734ca
+    *  ASN1_STRING_length
79734ca
+    */
79734ca
+   int ASN1_STRING_length(ASN1_STRING *x);
79734ca
+
79734ca
+   /*
79734ca
     *  
79734ca
     */
79734ca
    int OBJ_obj2nid(ASN1_OBJECT *o);
79734ca
diff -pruN kdelibs-3.5.4.orig/kio/kssl/ksslcertificate.cc kdelibs-3.5.4/kio/kssl/ksslcertificate.cc
79734ca
--- kdelibs-3.5.4.orig/kio/kssl/ksslcertificate.cc	2006-01-19 18:06:12.000000000 +0100
79734ca
+++ kdelibs-3.5.4/kio/kssl/ksslcertificate.cc	2009-08-31 21:54:38.000000000 +0200
79734ca
@@ -1099,7 +1099,9 @@ QStringList KSSLCertificate::subjAltName
79734ca
 		}
79734ca
 
79734ca
 		QString s = (const char *)d->kossl->ASN1_STRING_data(val->d.ia5);
79734ca
-		if (!s.isEmpty()) {
79734ca
+		if (!s.isEmpty()  &&
79734ca
+				/* skip subjectAltNames with embedded NULs */
79734ca
+				s.length() == d->kossl->ASN1_STRING_length(val->d.ia5)) {
79734ca
 			rc += s;
79734ca
 		}
79734ca
 	}