]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merge r1879878 from trunk:
authorJim Jagielski <jim@apache.org>
Tue, 11 Aug 2020 12:09:44 +0000 (12:09 +0000)
committerJim Jagielski <jim@apache.org>
Tue, 11 Aug 2020 12:09:44 +0000 (12:09 +0000)
Avoid NULL pointer dereferences for empty environment variable values
Submitted by: rpluem
Reviewed by: jailletc36, covener, gbechis, jim

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1880773 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
modules/proxy/mod_proxy_uwsgi.c

diff --git a/CHANGES b/CHANGES
index 6706ff7d1640a2d2fb959fdaf4d646d505d4ef39..33feea1106b02b156a9c529dab5e0eb3609baffc 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.4.47
 
+  *) mod_proxy_uwsgi: Fix a crash when sending environment variables with no
+     value. PR 64598 [Ruediger Pluem]
+
   *) mod_proxy: recognize parameters from ProxyPassMatch workers with dollar
      substitution, such that they apply to the backend connection.  Note that
      connection reuse is disabled by default to avoid compatibility issues.
diff --git a/STATUS b/STATUS
index 75425c266507fd8e892c0520fa0b638097c7e421..a8e2ff38f5a497be8e1eeefd4b404f7e24c3f964 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -138,13 +138,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-  *) mod_proxy_uwsgi: Avoid NULL pointer dereferences for empty environment variable values
-      http://svn.apache.org/r1879878
-   Backport version for 2.4.x of patch:
-      Trunk version of patch works
-      svn merge -c 1879878 ^/httpd/httpd/trunk .
-   +1: jailletc36, covener, gbechis, jim
-
 
 PATCHES PROPOSED TO BACKPORT FROM TRUNK:
   [ New proposals should be added at the end of the list ]
index 0209ac4062e7124ad79feffc025f6f4fbcada379..765f972980503ae294c82805cb4761f7d6328c3c 100644 (file)
@@ -175,7 +175,7 @@ static int uwsgi_send_headers(request_rec *r, proxy_conn_rec * conn)
     env = (apr_table_entry_t *) env_table->elts;
 
     for (j = 0; j < env_table->nelts; ++j) {
-        headerlen += 2 + strlen(env[j].key) + 2 + strlen(env[j].val);
+        headerlen += 2 + strlen(env[j].key) + 2 + (env[j].val ? strlen(env[j].val) : 0);
     }
 
     pktsize = headerlen - 4;
@@ -198,10 +198,12 @@ static int uwsgi_send_headers(request_rec *r, proxy_conn_rec * conn)
         memcpy(ptr, env[j].key, keylen);
         ptr += keylen;
 
-        vallen = strlen(env[j].val);
+        vallen = env[j].val ? strlen(env[j].val) : 0;
         *ptr++ = (apr_byte_t) (vallen & 0xff);
         *ptr++ = (apr_byte_t) ((vallen >> 8) & 0xff);
-        memcpy(ptr, env[j].val, vallen);
+        if (env[j].val) {
+            memcpy(ptr, env[j].val, vallen);
+        }
         ptr += vallen;
     }