https://issues.shibboleth.net/jira/browse/CPPXT-91
authorScott Cantor <cantor.2@osu.edu>
Sat, 6 Oct 2012 00:11:45 +0000 (00:11 +0000)
committerScott Cantor <cantor.2@osu.edu>
Sat, 6 Oct 2012 00:11:45 +0000 (00:11 +0000)
saml/saml2/metadata/impl/AbstractMetadataProvider.cpp

index 229d881..419fe1e 100644 (file)
@@ -363,9 +363,12 @@ const AbstractMetadataProvider::credmap_t::mapped_type& AbstractMetadataProvider
             k != make_indirect_iterator(keys.end()); ++k) {
         if (k->getKeyInfo()) {
             auto_ptr<MetadataCredentialContext> mcc(new MetadataCredentialContext(*k));
-            Credential* c = resolver->resolve(mcc.get());
-            mcc.release();
-            resolved.push_back(c);
+            auto_ptr<Credential> c(resolver->resolve(mcc.get()));
+            if (c.get()) {
+                mcc.release();  // this API sucks, the object is now owned by the Credential
+                resolved.push_back(c.get());
+                c.release();
+            }
         }
     }
     return resolved;