Add additional logging and fix a leak on an error path.
authorcantor <cantor@fb386ef7-a10c-0410-8ebf-fd3f8e989ab0>
Tue, 24 Nov 2009 18:01:36 +0000 (18:01 +0000)
committercantor <cantor@fb386ef7-a10c-0410-8ebf-fd3f8e989ab0>
Tue, 24 Nov 2009 18:01:36 +0000 (18:01 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-opensaml2/branches/REL_2@526 fb386ef7-a10c-0410-8ebf-fd3f8e989ab0

saml/saml2/binding/impl/SAML2ArtifactDecoder.cpp

index e9fab4d..b3e1502 100644 (file)
@@ -116,8 +116,9 @@ XMLObject* SAML2ArtifactDecoder::decode(
     // Check the type.
     auto_ptr<SAML2Artifact> artifact2(dynamic_cast<SAML2Artifact*>(artifact));
     if (!artifact2.get()) {
-        throw BindingException("Artifact binding requires SAML 2.0 artifact.");
         delete artifact;
+        log.error("wrong artifact type");
+        throw BindingException("Artifact binding requires SAML 2.0 artifact.");
     }
 
     log.debug("attempting to determine source of artifact...");
@@ -158,8 +159,10 @@ XMLObject* SAML2ArtifactDecoder::decode(
 
     // Now extract details from the payload and check that message.
     XMLObject* payload = response->getPayload();
-    if (!payload)
+    if (!payload) {
+        log.error("ArtifactResponse message did not contain a protocol message");
         throw BindingException("ArtifactResponse message did not contain a protocol message.");
+    }
     extractMessageDetails(*payload, genericRequest, samlconstants::SAML20P_NS, policy);
     policy.evaluate(*payload, &genericRequest);