Check for null key info.
authorScott Cantor <cantor.2@osu.edu>
Thu, 24 Aug 2006 23:24:47 +0000 (23:24 +0000)
committerScott Cantor <cantor.2@osu.edu>
Thu, 24 Aug 2006 23:24:47 +0000 (23:24 +0000)
xmltooling/signature/impl/InlineKeyResolver.cpp

index 897af8e..5fb2d61 100644 (file)
@@ -122,6 +122,9 @@ XSECCryptoKey* InlineKeyResolver::_resolveKey(const KeyInfo* keyInfo) const
 #endif\r
     Category& log=Category::getInstance(XMLTOOLING_LOGCAT".KeyResolver");\r
 \r
+    if (!keyInfo)\r
+        return NULL;\r
+\r
     // Check for ds:X509Data\r
     const vector<X509Data*>& x509Datas=keyInfo->getX509Datas();\r
     for (vector<X509Data*>::const_iterator j=x509Datas.begin(); j!=x509Datas.end(); ++j) {\r
@@ -210,6 +213,9 @@ vector<XSECCryptoX509*>::size_type InlineKeyResolver::_resolveCertificates(
 #endif\r
     Category& log=Category::getInstance(XMLTOOLING_LOGCAT".KeyResolver");\r
 \r
+    if (!keyInfo)\r
+        return 0;\r
+\r
     // Check for ds:X509Data\r
     const vector<X509Data*>& x509Datas=keyInfo->getX509Datas();\r
     for (vector<X509Data*>::const_iterator j=x509Datas.begin(); certs.empty() && j!=x509Datas.end(); ++j) {\r
@@ -249,6 +255,9 @@ XSECCryptoX509CRL* InlineKeyResolver::_resolveCRL(const KeyInfo* keyInfo) const
 #endif\r
     Category& log=Category::getInstance(XMLTOOLING_LOGCAT".KeyResolver");\r
 \r
+    if (!keyInfo)\r
+        return NULL;\r
+\r
     // Check for ds:X509Data\r
     const vector<X509Data*>& x509Datas=keyInfo->getX509Datas();\r
     for (vector<X509Data*>::const_iterator j=x509Datas.begin(); j!=x509Datas.end(); ++j) {\r
@@ -378,6 +387,9 @@ XSECCryptoKey* InlineKeyResolver::resolveKey(DSIGKeyInfoList* keyInfo) const
     NDC ndc("resolveKey");\r
 #endif\r
 \r
+    if (!keyInfo)\r
+        return NULL;\r
+\r
     // Default resolver handles RSA/DSAKeyValue and X509Certificate elements.\r
     try {\r
         XSECKeyInfoResolverDefault def;\r
@@ -399,6 +411,10 @@ vector<XSECCryptoX509*>::size_type InlineKeyResolver::resolveCertificates(
 {\r
     accessCertificates(certs).clear();\r
     accessOwned(certs) = false;\r
+\r
+    if (!keyInfo)\r
+        return 0;\r
+\r
        DSIGKeyInfoList::size_type sz = keyInfo->getSize();\r
     for (DSIGKeyInfoList::size_type i=0; accessCertificates(certs).empty() && i<sz; ++i) {\r
         if (keyInfo->item(i)->getKeyInfoType()==DSIGKeyInfo::KEYINFO_X509) {\r
@@ -418,6 +434,9 @@ XSECCryptoX509CRL* InlineKeyResolver::resolveCRL(DSIGKeyInfoList* keyInfo) const
     NDC ndc("resolveCRL");\r
 #endif\r
 \r
+    if (!keyInfo)\r
+        return NULL;\r
+\r
     DSIGKeyInfoList::size_type sz = keyInfo->getSize();\r
     for (DSIGKeyInfoList::size_type i=0; i<sz; ++i) {\r
         if (keyInfo->item(i)->getKeyInfoType()==DSIGKeyInfo::KEYINFO_X509) {\r