[JIRA] Closed: (SSPCPP-468) Aliases support in XML Attribute Extractor no longer working in 2.5.0 Beta 1

Scott Cantor (JIRA) noreply at shibboleth.net
Tue Jun 26 15:15:55 BST 2012


     [ https://issues.shibboleth.net/jira/browse/SSPCPP-468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Scott Cantor closed SSPCPP-468.
-------------------------------


> Aliases support in XML Attribute Extractor no longer working in 2.5.0 Beta 1
> ----------------------------------------------------------------------------
>
>                 Key: SSPCPP-468
>                 URL: https://issues.shibboleth.net/jira/browse/SSPCPP-468
>             Project: Shibboleth SP - C++
>          Issue Type: Bug
>          Components: Attribute Resolution / Filtering
>    Affects Versions: 2.5
>            Reporter: Kaspar Brand
>            Assignee: Scott Cantor
>             Fix For: 2.5
>
>          Time Spent: 15 minutes
>  Remaining Estimate: 0 minutes
>
> Same issue as SSPCPP-22, but different cause, actually: with 2.5.0, support for aliases (defined as an attribute on the <Attribute> element in attribute-map.xml) is no longer working.
> It's a regression introduced by http://svn.shibboleth.net/view/cpp-sp?view=revision&revision=3554 ("Boost code changes"), specifically the following change to XMLAttributeExtractor.cpp:
>          name = child->getAttributeNS(nullptr, _aliases);
>          if (name && *name) {
>              auto_ptr_char aliases(name);
> -            char* pos;
> -            char* start = const_cast<char*>(aliases.get());
> -            while (start && *start) {
> -                while (*start && isspace(*start))
> -                    start++;
> -                if (!*start)
> -                    break;
> -                pos = strchr(start,' ');
> -                if (pos)
> -                    *pos=0;
> -                if (strcmp(start, "REMOTE_USER")) {
> -                    decl.second.push_back(start);
> -                    m_attributeIds.push_back(start);
> -                }
> -                else {
> -                    m_log.warn("skipping alias, REMOTE_USER is a reserved name");
> -                }
> -                start = pos ? pos+1 : nullptr;
> +            string dup(aliases.get());
> +            set<string> new_aliases;
> +            split(new_aliases, dup, is_space(), algorithm::token_compress_on);
> +            set<string>::iterator ru = new_aliases.find("REMOTE_USER");
> +            if (ru != new_aliases.end()) {
> +                m_log.warn("skipping alias, REMOTE_USER is a reserved name");
> +                new_aliases.erase(ru);
>              }
> +            m_attributeIds.insert(m_attributeIds.end(), new_aliases.begin(), new_aliases.end());
>          }
>  
>          child = XMLHelper::getNextSiblingElement(child, shibspconstants::SHIB2ATTRIBUTEMAP_NS, saml1::Attribute::LOCAL_NAME);
> (It's beyond my C++ skills to point out the exact issue with the new code, but perhaps the mix of <set>string [for new_aliases] and <vector>string [for m_attributeIds] is causing troubles?)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the commits mailing list