Fix for empty decoder result, take out old logout handler.
authorcantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Sun, 17 Jun 2007 20:30:24 +0000 (20:30 +0000)
committercantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Sun, 17 Jun 2007 20:30:24 +0000 (20:30 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/trunk@2315 cb58f699-b61c-0410-a6fe-9272a202ed29

configs/shibboleth2.xml.in
shibsp/attribute/AttributeDecoder.h
shibsp/attribute/resolver/impl/XMLAttributeExtractor.cpp

index 63c0904..083cee4 100644 (file)
                        -->
                        <md:ArtifactResolutionService Location="/SOAP/Artifact" index="1"
                                Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"/>
-                       
-                       <!--
-                       md:SingleLogoutService elements are mostly a placeholder for 2.0, but a simple
-                       cookie-clearing option with a ResponseLocation or a return URL parameter is
-                       supported via the "urn:mace:shibboleth:sp:1.3:Logout" Binding value.
-                       -->
-                       <md:SingleLogoutService Location="/Logout" Binding="urn:mace:shibboleth:sp:1.3:Logout"/>
 
                </Sessions>
 
index 3f9c85b..dd16148 100644 (file)
@@ -55,7 +55,7 @@ namespace shibsp {
          * @param xmlObject         XMLObject to decode
          * @param assertingParty    name of the party asserting the attribute
          * @param relyingParty      name of the party relying on the attribute
-         * @return a resolved Attribute
+         * @return a resolved Attribute, or NULL
          */
         virtual Attribute* decode(
             const char* id, const xmltooling::XMLObject* xmlObject, const char* assertingParty=NULL, const char* relyingParty=NULL
index 1604055..b8b145a 100644 (file)
@@ -250,12 +250,9 @@ void XMLExtractorImpl::extractAttributes(
     auto_ptr_char temp(format);
     if ((rule=m_attrMap.find(make_pair(temp.get(),string()))) != m_attrMap.end()) {
 #endif
-        attributes.insert(
-            make_pair(
-                rule->second.second,
-                rule->second.first->decode(rule->second.second.c_str(), &nameid, assertingParty, application.getString("entityID").second)
-                )
-            );
+        Attribute* a = rule->second.first->decode(rule->second.second.c_str(), &nameid, assertingParty, application.getString("entityID").second);
+        if (a)
+            attributes.insert(make_pair(rule->second.second, a));
     }
 }
 
@@ -278,12 +275,9 @@ void XMLExtractorImpl::extractAttributes(
     auto_ptr_char temp(format);
     if ((rule=m_attrMap.find(make_pair(temp.get(),string()))) != m_attrMap.end()) {
 #endif
-        attributes.insert(
-            make_pair(
-                rule->second.second,
-                rule->second.first->decode(rule->second.second.c_str(), &nameid, assertingParty, application.getString("entityID").second)
-                )
-            );
+        Attribute* a = rule->second.first->decode(rule->second.second.c_str(), &nameid, assertingParty, application.getString("entityID").second);
+        if (a)
+            attributes.insert(make_pair(rule->second.second, a));
     }
 }
 
@@ -310,12 +304,9 @@ void XMLExtractorImpl::extractAttributes(
     auto_ptr_char temp2(format);
     if ((rule=m_attrMap.find(make_pair(temp1.get(),temp2.get()))) != m_attrMap.end()) {
 #endif
-        attributes.insert(
-            make_pair(
-                rule->second.second,
-                rule->second.first->decode(rule->second.second.c_str(), &attr, assertingParty, application.getString("entityID").second)
-                )
-            );
+        Attribute* a = rule->second.first->decode(rule->second.second.c_str(), &attr, assertingParty, application.getString("entityID").second);
+        if (a)
+            attributes.insert(make_pair(rule->second.second, a));
     }
 }
 
@@ -344,12 +335,9 @@ void XMLExtractorImpl::extractAttributes(
     auto_ptr_char temp2(format);
     if ((rule=m_attrMap.find(make_pair(temp1.get(),temp2.get()))) != m_attrMap.end()) {
 #endif
-        attributes.insert(
-            make_pair(
-                rule->second.second,
-                rule->second.first->decode(rule->second.second.c_str(), &attr, assertingParty, application.getString("entityID").second)
-                )
-            );
+        Attribute* a = rule->second.first->decode(rule->second.second.c_str(), &attr, assertingParty, application.getString("entityID").second);
+        if (a)
+            attributes.insert(make_pair(rule->second.second, a));
     }
 }