https://issues.shibboleth.net/jira/browse/CPPXT-97
authorScott Cantor <cantor.2@osu.edu>
Fri, 9 Jan 2015 03:39:44 +0000 (03:39 +0000)
committerScott Cantor <cantor.2@osu.edu>
Fri, 9 Jan 2015 03:39:44 +0000 (03:39 +0000)
apache/mod_shib.cpp
fastcgi/shibauthorizer.cpp
fastcgi/shibresponder.cpp
isapi_shib/isapi_shib.cpp
nsapi_shib/nsapi_shib.cpp

index 311297b..edf99e1 100644 (file)
@@ -602,19 +602,23 @@ public:
       m_req->content_type = ap_psprintf(m_req->pool, "%s", type);
   }
   void setResponseHeader(const char* name, const char* value) {
-   HTTPResponse::setResponseHeader(name, value);
+    HTTPResponse::setResponseHeader(name, value);
+    if (name) {
 #ifdef SHIB_DEFERRED_HEADERS
-   if (!m_rc)
-      // this happens on subrequests
-      m_rc = get_request_config(m_req);
-    if (m_handler) {
-        if (!m_rc->hdr_out)
-            m_rc->hdr_out = ap_make_table(m_req->pool, 5);
-        ap_table_add(m_rc->hdr_out, name, value);
-    }
-    else
+        if (!m_rc) {
+            // this happens on subrequests
+            m_rc = get_request_config(m_req);
+        }
+        if (m_handler) {
+            if (!m_rc->hdr_out) {
+                m_rc->hdr_out = ap_make_table(m_req->pool, 5);
+            }
+            ap_table_add(m_rc->hdr_out, name, value);
+        }
+        else
 #endif
-    ap_table_add(m_req->err_headers_out, name, value);
+            ap_table_add(m_req->err_headers_out, name, value);
+    }
   }
   long sendResponse(istream& in, long status) {
     if (status != XMLTOOLING_HTTP_STATUS_OK)
index 214a729..75d3185 100644 (file)
@@ -198,11 +198,13 @@ public:
     }
     void setResponseHeader(const char* name, const char* value) {
         HTTPResponse::setResponseHeader(name, value);
-        // Set for later.
-        if (value)
-            m_response_headers.insert(make_pair(name,value));
-        else
-            m_response_headers.erase(name);
+        if (name) {
+            // Set for later.
+            if (value)
+                m_response_headers.insert(make_pair(name,value));
+            else
+                m_response_headers.erase(name);
+        }
     }
     const char* getQueryString() const {
         return FCGX_GetParam("QUERY_STRING", m_req->envp);
index e23bf58..9f63a2f 100644 (file)
@@ -150,11 +150,13 @@ public:
 
     void setResponseHeader(const char* name, const char* value) {
         HTTPResponse::setResponseHeader(name, value);
-        // Set for later.
-        if (value)
-            m_headers.insert(make_pair(name,value));
-        else
-            m_headers.erase(name);
+        if (name) {
+            // Set for later.
+            if (value)
+                m_headers.insert(make_pair(name,value));
+            else
+                m_headers.erase(name);
+        }
     }
 
     const char* getQueryString() const {
index 40a248c..f7bded1 100644 (file)
@@ -492,11 +492,13 @@ public:
   }
   void setResponseHeader(const char* name, const char* value) {
     HTTPResponse::setResponseHeader(name, value);
-    // Set for later.
-    if (value)
-        m_headers.insert(make_pair(name,value));
-    else
-        m_headers.erase(name);
+    if (name) {
+        // Set for later.
+        if (value)
+            m_headers.insert(make_pair(name,value));
+        else
+            m_headers.erase(name);
+    }
   }
   long sendResponse(istream& in, long status) {
     string hdr = string("Connection: close\r\n");
@@ -866,11 +868,13 @@ public:
   }
   void setResponseHeader(const char* name, const char* value) {
     HTTPResponse::setResponseHeader(name, value);
-    // Set for later.
-    if (value)
-        m_headers.insert(make_pair(name,value));
-    else
-        m_headers.erase(name);
+    if (name) {
+        // Set for later.
+        if (value)
+            m_headers.insert(make_pair(name,value));
+        else
+            m_headers.erase(name);
+    }
   }
   const char* getQueryString() const {
     return m_lpECB->lpszQueryString;
index 886d7cc..4b0c678 100644 (file)
@@ -427,7 +427,9 @@ public:
   }
   void setResponseHeader(const char* name, const char* value) {
     HTTPResponse::setResponseHeader(name, value);
-    pblock_nvinsert(name, value, m_rq->srvhdrs);
+    if (name) {
+        pblock_nvinsert(name, value, m_rq->srvhdrs);
+    }
   }
 
   long sendResponse(istream& in, long status) {