X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Futil%2FCommonDomainCookie.cpp;h=23b15ef918d11c63ad357d999ba4cd7f002cfaa2;hp=5fa1391ee04d5ef4648ef6acc6c8a13b021297da;hb=28e4fb2d10b3c51113909f01a2bca402668c28aa;hpb=858f076a1d930a6234ccf7e617bd51fc7c49d1c3 diff --git a/saml/util/CommonDomainCookie.cpp b/saml/util/CommonDomainCookie.cpp index 5fa1391..23b15ef 100644 --- a/saml/util/CommonDomainCookie.cpp +++ b/saml/util/CommonDomainCookie.cpp @@ -53,6 +53,9 @@ CommonDomainCookie::CommonDomainCookie(const char* cookie) split(m_list, b64, is_space(), algorithm::token_compress_on); free(b64); + // Remove empty elements. + m_list.erase(remove(m_list.begin(), m_list.end(), ""), m_list.end()); + // Now Base64 decode the list elements, overwriting them. xsecsize_t len; for (vector::iterator i = m_list.begin(); i != m_list.end(); ++i) { @@ -90,22 +93,24 @@ const char* CommonDomainCookie::set(const char* entityID) xsecsize_t len; string delimited; for (vector::const_iterator j = m_list.begin(); j != m_list.end(); ++j) { - if (!delimited.empty()) - delimited += ' '; XMLByte* b64 = Base64::encode(reinterpret_cast(j->c_str()), j->length(), &len); - XMLByte *pos, *pos2; - for (pos = b64, pos2 = b64; *pos2; ++pos2) - if (isgraph(*pos2)) - *pos++ = *pos2; - *pos = 0; + if (b64) { + XMLByte *pos, *pos2; + for (pos = b64, pos2 = b64; *pos2; ++pos2) + if (isgraph(*pos2)) + *pos++ = *pos2; + *pos = 0; - delimited += reinterpret_cast(b64); + if (!delimited.empty()) + delimited += ' '; + delimited += reinterpret_cast(b64); #ifdef OPENSAML_XERCESC_HAS_XMLBYTE_RELEASE - XMLString::release(&b64); + XMLString::release(&b64); #else - XMLString::release((char**)&b64); + XMLString::release((char**)&b64); #endif + } } m_encoded = XMLToolingConfig::getConfig().getURLEncoder()->encode(delimited.c_str());