]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Avoid NULL pointer dereferences for empty environment variable values
authorRuediger Pluem <rpluem@apache.org>
Wed, 15 Jul 2020 08:24:13 +0000 (08:24 +0000)
committerRuediger Pluem <rpluem@apache.org>
Wed, 15 Jul 2020 08:24:13 +0000 (08:24 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879878 13f79535-47bb-0310-9956-ffa450edef68

changes-entries/pr64598.txt [new file with mode: 0644]
modules/proxy/mod_proxy_uwsgi.c

diff --git a/changes-entries/pr64598.txt b/changes-entries/pr64598.txt
new file mode 100644 (file)
index 0000000..3647d8a
--- /dev/null
@@ -0,0 +1,2 @@
+  *) mod_proxy_uwsgi: Fix a crash when sending environment variables with no
+     value. PR 64598 [Ruediger Pluem]
index 32994470bed094753e9a66c952d7255c231d8850..87f82a1d4d2bc6a43bef1a468add40ba3eca3c16 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);
     }
 
     ptr = buf = apr_palloc(r->pool, headerlen);
@@ -189,10 +189,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;
     }