QPID-4883: merge fix from trunk

git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.22@1486100 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/qpid/cpp/src/qpid/sys/ssl/SslSocket.cpp b/qpid/cpp/src/qpid/sys/ssl/SslSocket.cpp
index a328e49..a721918 100644
--- a/qpid/cpp/src/qpid/sys/ssl/SslSocket.cpp
+++ b/qpid/cpp/src/qpid/sys/ssl/SslSocket.cpp
@@ -336,16 +336,19 @@
     std::string authId;
     CERTCertificate* cert = SSL_PeerCertificate(nssSocket);
     if (cert) {
-        authId = CERT_GetCommonName(&(cert->subject));
-        /*
-         * The NSS function CERT_GetDomainComponentName only returns
-         * the last component of the domain name, so we have to parse
-         * the subject manually to extract the full domain.
-         */
-        std::string domain = getDomainFromSubject(cert->subjectName);
-        if (!domain.empty()) {
-            authId += DOMAIN_SEPARATOR;
-            authId += domain;
+        char *cn = CERT_GetCommonName(&(cert->subject));
+        if (cn) {
+            authId = std::string(cn);
+            /*
+             * The NSS function CERT_GetDomainComponentName only returns
+             * the last component of the domain name, so we have to parse
+             * the subject manually to extract the full domain.
+             */
+            std::string domain = getDomainFromSubject(cert->subjectName);
+            if (!domain.empty()) {
+                authId += DOMAIN_SEPARATOR;
+                authId += domain;
+            }
         }
         CERT_DestroyCertificate(cert);
     }