X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fbinding%2Fimpl%2FSAML2ArtifactEncoder.cpp;h=7480aec6d6f36104f2e5cd876010a91e74f205e3;hb=11cd3b15c71ee22f2818d810a17c213123e8c248;hp=a7d7500b2d8c616d3c570c56f2184e321667028b;hpb=e9ac4f386759a8fa26623f2c1bac23880723cd46;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp b/saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp index a7d7500..7480aec 100644 --- a/saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp +++ b/saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp @@ -49,7 +49,7 @@ namespace opensaml { class SAML_DLLLOCAL SAML2ArtifactEncoder : public MessageEncoder { public: - SAML2ArtifactEncoder(const DOMElement* e); + SAML2ArtifactEncoder(const DOMElement* e, const XMLCh* ns); virtual ~SAML2ArtifactEncoder() {} long encode( @@ -69,9 +69,9 @@ namespace opensaml { string m_template; }; - MessageEncoder* SAML_DLLLOCAL SAML2ArtifactEncoderFactory(const DOMElement* const & e) + MessageEncoder* SAML_DLLLOCAL SAML2ArtifactEncoderFactory(const pair& p) { - return new SAML2ArtifactEncoder(e); + return new SAML2ArtifactEncoder(p.first, p.second); } }; @@ -79,14 +79,14 @@ namespace opensaml { static const XMLCh postArtifact[] = UNICODE_LITERAL_12(p,o,s,t,A,r,t,i,f,a,c,t); }; -SAML2ArtifactEncoder::SAML2ArtifactEncoder(const DOMElement* e) : m_post(false) +SAML2ArtifactEncoder::SAML2ArtifactEncoder(const DOMElement* e, const XMLCh* ns) : m_post(false) { if (e) { - const XMLCh* flag = e->getAttributeNS(NULL, postArtifact); + const XMLCh* flag = e->getAttributeNS(ns, postArtifact); m_post = (flag && (*flag==chLatin_t || *flag==chDigit_1)); if (m_post) { - auto_ptr_char t(e->getAttributeNS(NULL, _template)); - if (t.get()) + auto_ptr_char t(e->getAttributeNS(ns, _template)); + if (t.get() && *t.get()) m_template = t.get(); } } @@ -121,10 +121,11 @@ long SAML2ArtifactEncoder::encode( StatusResponseType* response = NULL; RequestAbstractType* request = dynamic_cast(xmlObject); - if (!request) + if (!request) { response = dynamic_cast(xmlObject); - if (!response) - throw BindingException("XML content for SAML 2.0 HTTP-Artifact Encoder must be a SAML 2.0 protocol message."); + if (!response) + throw BindingException("XML content for SAML 2.0 HTTP-Artifact Encoder must be a SAML 2.0 protocol message."); + } ArtifactMap* mapper = SAMLConfig::getConfig().getArtifactMap(); if (!mapper)