From beedb92ef66eeaa77aae08688cde409d96a6f829 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Fri, 25 Mar 2011 23:31:20 +1100 Subject: [PATCH] Treat missing attribute name format as UNSPECIFIED Patch from Scott Cantor --- mech_eap/util_saml.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/mech_eap/util_saml.cpp b/mech_eap/util_saml.cpp index 5346cc4..2451c46 100644 --- a/mech_eap/util_saml.cpp +++ b/mech_eap/util_saml.cpp @@ -444,13 +444,17 @@ gss_eap_saml_attr_provider::getAttributeTypes(gss_eap_attr_enumeration_cb addAtt const_cast(*s)->getAttributes(); for (vector::const_iterator a = attrs.begin(); a != attrs.end(); ++a) { - const XMLCh *attributeName = (*a)->getName(); - const XMLCh *attributeNameFormat = (*a)->getNameFormat(); + const XMLCh *attributeName, *attributeNameFormat; XMLCh *qualifiedName; XMLCh space[2] = { ' ', 0 }; gss_buffer_desc utf8; bool ret; + attributeName = (*a)->getName(); + attributeNameFormat = (*a)->getNameFormat(); + if (attributeNameFormat == NULL || attributeNameFormat[0] == '\0') + attributeNameFormat = saml2::Attribute::UNSPECIFIED; + qualifiedName = new XMLCh[XMLString::stringLen(attributeNameFormat) + 1 + XMLString::stringLen(attributeName) + 1]; XMLString::copyString(qualifiedName, attributeNameFormat); @@ -619,8 +623,15 @@ gss_eap_saml_attr_provider::getAttribute(const gss_buffer_t attr, const_cast(*s)->getAttributes(); for (vector::const_iterator a = attrs.begin(); a != attrs.end(); ++a) { - if (XMLString::equals((*a)->getNameFormat(), components->elementAt(0)) && - XMLString::equals((*a)->getName(), components->elementAt(1))) { + const XMLCh *attributeName, *attributeNameFormat; + + attributeName = (*a)->getName(); + attributeNameFormat = (*a)->getNameFormat(); + if (attributeNameFormat == NULL || attributeNameFormat[0] == '\0') + attributeNameFormat = saml2::Attribute::UNSPECIFIED; + + if (XMLString::equals(attributeNameFormat, components->elementAt(0)) && + XMLString::equals(attributeName, components->elementAt(1))) { ret = *a; break; } -- 2.1.4