X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=shibsp%2Fattribute%2FNameIDAttributeDecoder.cpp;fp=shibsp%2Fattribute%2FNameIDAttributeDecoder.cpp;h=6adf938c0b2f38e95ff61a73227207d036455170;hb=3c1e801d6539b92d6d3d7fb40d661a7ce630ec44;hp=d220e6a52a74e50041e08dedc198de069cbdcd41;hpb=f2621219507344852f967e4099e9c341499eb802;p=shibboleth%2Fsp.git diff --git a/shibsp/attribute/NameIDAttributeDecoder.cpp b/shibsp/attribute/NameIDAttributeDecoder.cpp index d220e6a..6adf938 100644 --- a/shibsp/attribute/NameIDAttributeDecoder.cpp +++ b/shibsp/attribute/NameIDAttributeDecoder.cpp @@ -51,8 +51,15 @@ namespace shibsp { } ~NameIDAttributeDecoder() {} + // deprecated method shibsp::Attribute* decode( const vector& ids, const XMLObject* xmlObject, const char* assertingParty=nullptr, const char* relyingParty=nullptr + ) const { + return decode(nullptr, ids, xmlObject, assertingParty, relyingParty); + } + + shibsp::Attribute* decode( + const GenericRequest*, const vector&, const XMLObject*, const char* assertingParty=nullptr, const char* relyingParty=nullptr ) const; private: @@ -73,11 +80,11 @@ namespace shibsp { }; shibsp::Attribute* NameIDAttributeDecoder::decode( - const vector& ids, const XMLObject* xmlObject, const char* assertingParty, const char* relyingParty + const GenericRequest*, const vector& ids, const XMLObject* xmlObject, const char* assertingParty, const char* relyingParty ) const { auto_ptr nameid( - new NameIDAttribute(ids, (!m_formatter.empty()) ? m_formatter.c_str() : DEFAULT_NAMEID_FORMATTER) + new NameIDAttribute(ids, (!m_formatter.empty()) ? m_formatter.c_str() : DEFAULT_NAMEID_FORMATTER, m_hashAlg.c_str()) ); vector& dest = nameid->getValues(); vector::const_iterator v,stop; @@ -118,7 +125,7 @@ shibsp::Attribute* NameIDAttributeDecoder::decode( } } - for (; v!=stop; ++v) { + for (; v != stop; ++v) { const NameIDType* n2 = dynamic_cast(*v); if (n2) { log.debug("decoding AttributeValue element of saml2:NameIDType type"); @@ -152,7 +159,7 @@ shibsp::Attribute* NameIDAttributeDecoder::decode( } } - return dest.empty() ? nullptr : _decode(nameid.release()); + return dest.empty() ? nullptr : nameid.release(); } const NameIDType* saml2name = dynamic_cast(xmlObject); @@ -181,7 +188,7 @@ shibsp::Attribute* NameIDAttributeDecoder::decode( } } - return dest.empty() ? nullptr : _decode(nameid.release()); + return dest.empty() ? nullptr : nameid.release(); } void NameIDAttributeDecoder::extract( @@ -193,31 +200,26 @@ void NameIDAttributeDecoder::extract( dest.push_back(NameIDAttribute::Value()); NameIDAttribute::Value& val = dest.back(); val.m_Name = name.get(); - char* str = toUTF8(n->getFormat()); - if (str) { - val.m_Format = str; - delete[] str; - } - str = toUTF8(n->getNameQualifier()); - if (str && *str) - val.m_NameQualifier = str; + auto_arrayptr format(toUTF8(n->getFormat())); + if (format.get()) + val.m_Format = format.get(); + + auto_arrayptr nameQualifier(toUTF8(n->getNameQualifier())); + if (nameQualifier.get() && *nameQualifier.get()) + val.m_NameQualifier = nameQualifier.get(); else if (m_defaultQualifiers && assertingParty) val.m_NameQualifier = assertingParty; - delete[] str; - str = toUTF8(n->getSPNameQualifier()); - if (str && *str) - val.m_SPNameQualifier = str; + auto_arrayptr spNameQualifier(toUTF8(n->getSPNameQualifier())); + if (spNameQualifier.get() && *spNameQualifier.get()) + val.m_SPNameQualifier = spNameQualifier.get(); else if (m_defaultQualifiers && relyingParty) val.m_SPNameQualifier = relyingParty; - delete[] str; - str = toUTF8(n->getSPProvidedID()); - if (str) { - val.m_SPProvidedID = str; - delete[] str; - } + auto_arrayptr spProvidedID(toUTF8(n->getSPProvidedID())); + if (spProvidedID.get()) + val.m_SPProvidedID = spProvidedID.get(); } } @@ -230,18 +232,16 @@ void NameIDAttributeDecoder::extract( dest.push_back(NameIDAttribute::Value()); NameIDAttribute::Value& val = dest.back(); val.m_Name = name.get(); - char* str = toUTF8(n->getFormat()); - if (str) { - val.m_Format = str; - delete[] str; - } - str = toUTF8(n->getNameQualifier()); - if (str && *str) - val.m_NameQualifier = str; + auto_arrayptr format(toUTF8(n->getFormat())); + if (format.get()) + val.m_Format = format.get(); + + auto_arrayptr nameQualifier(toUTF8(n->getNameQualifier())); + if (nameQualifier.get() && *nameQualifier.get()) + val.m_NameQualifier = nameQualifier.get(); else if (m_defaultQualifiers && assertingParty) val.m_NameQualifier = assertingParty; - delete[] str; if (m_defaultQualifiers && relyingParty) val.m_SPNameQualifier = relyingParty;