Handle empty string in relay state.
authorScott Cantor <cantor.2@osu.edu>
Sun, 15 Apr 2007 19:25:53 +0000 (19:25 +0000)
committerScott Cantor <cantor.2@osu.edu>
Sun, 15 Apr 2007 19:25:53 +0000 (19:25 +0000)
saml/saml2/binding/impl/SAML2ArtifactEncoder.cpp
saml/saml2/binding/impl/SAML2POSTEncoder.cpp
saml/saml2/binding/impl/SAML2RedirectEncoder.cpp

index f397ebd..8fa33ce 100644 (file)
@@ -161,7 +161,7 @@ long SAML2ArtifactEncoder::encode(
         loc += (strchr(destination,'?') ? '&' : '?');
         const URLEncoder* escaper = XMLToolingConfig::getConfig().getURLEncoder();
         loc = loc + "SAMLart=" + escaper->encode(artifact->encode().c_str());
-        if (relayState)
+        if (relayState && *relayState)
             loc = loc + "&RelayState=" + escaper->encode(relayState);
         log.debug("message encoded, sending redirect to client");
         return httpResponse->sendRedirect(loc.c_str());
@@ -178,7 +178,7 @@ long SAML2ArtifactEncoder::encode(
         TemplateEngine::TemplateParameters params;
         params.m_map["action"] = destination;
         params.m_map["SAMLart"] = artifact->encode();
-        if (relayState)
+        if (relayState && *relayState)
             params.m_map["RelayState"] = relayState;
         stringstream s;
         engine->run(infile, s, params);
index 0678a3b..f8242db 100644 (file)
@@ -149,7 +149,7 @@ long SAML2POSTEncoder::encode(
     
     // Start tracking data.
     TemplateEngine::TemplateParameters pmap;
-    if (relayState)
+    if (relayState && *relayState)
         pmap.m_map["RelayState"] = relayState;
 
     // Serialize the message.
@@ -160,7 +160,7 @@ long SAML2POSTEncoder::encode(
     if (credential && m_simple) {
         log.debug("applying simple signature to message data");
         string input = (request ? "SAMLRequest=" : "SAMLResponse=") + msg;
-        if (relayState)
+        if (relayState && *relayState)
             input = input + "&RelayState=" + relayState;
         if (!signatureAlg)
             signatureAlg = DSIGConstants::s_unicodeStrURIRSA_SHA1;
index 147271d..c450177 100644 (file)
@@ -125,7 +125,7 @@ long SAML2RedirectEncoder::encode(
     xmlbuf.erase();
     xmlbuf.append(reinterpret_cast<char*>(encoded),len);
     xmlbuf = (request ? "SAMLRequest=" : "SAMLResponse=") + escaper->encode(xmlbuf.c_str()); 
-    if (relayState)
+    if (relayState && *relayState)
         xmlbuf = xmlbuf + "&RelayState=" + escaper->encode(relayState);
   
     if (credential) {