From: Ruediger Pluem Date: Wed, 15 Jul 2020 08:24:13 +0000 (+0000) Subject: Avoid NULL pointer dereferences for empty environment variable values X-Git-Tag: 2.5.0-alpha2-ci-test-only~1263 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=57df7f972eea050bf0efe119cd7a719741906041;p=thirdparty%2Fapache%2Fhttpd.git Avoid NULL pointer dereferences for empty environment variable values git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1879878 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/changes-entries/pr64598.txt b/changes-entries/pr64598.txt new file mode 100644 index 00000000000..3647d8a97d1 --- /dev/null +++ b/changes-entries/pr64598.txt @@ -0,0 +1,2 @@ + *) mod_proxy_uwsgi: Fix a crash when sending environment variables with no + value. PR 64598 [Ruediger Pluem] diff --git a/modules/proxy/mod_proxy_uwsgi.c b/modules/proxy/mod_proxy_uwsgi.c index 32994470bed..87f82a1d4d2 100644 --- a/modules/proxy/mod_proxy_uwsgi.c +++ b/modules/proxy/mod_proxy_uwsgi.c @@ -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; }