]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
* modules/proxy/proxy_util.c (ap_proxy_define_balancer):
authorJoe Orton <jorton@apache.org>
Tue, 16 Mar 2021 12:55:18 +0000 (12:55 +0000)
committerJoe Orton <jorton@apache.org>
Tue, 16 Mar 2021 12:55:18 +0000 (12:55 +0000)
  Fix leak in error path in the do_malloc case, caught by covscan.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1887720 13f79535-47bb-0310-9956-ffa450edef68

modules/proxy/proxy_util.c

index 4db1b5ecf052ddf3a4f5ca326a16836684eb9891..cc8e8c4a41e4756b9487870af86738fc7301ab25 100644 (file)
@@ -1180,6 +1180,7 @@ PROXY_DECLARE(char *) ap_proxy_define_balancer(apr_pool_t *p,
     bshared->was_malloced = (do_malloc != 0);
     PROXY_STRNCPY(bshared->lbpname, "byrequests");
     if (PROXY_STRNCPY(bshared->name, uri) != APR_SUCCESS) {
+        if (do_malloc) free(bshared);
         return apr_psprintf(p, "balancer name (%s) too long", uri);
     }
     (*balancer)->lbmethod_set = 1;
@@ -1192,6 +1193,7 @@ PROXY_DECLARE(char *) ap_proxy_define_balancer(apr_pool_t *p,
                    &sname);
     sname = apr_pstrcat(p, conf->id, "_", sname, NULL);
     if (PROXY_STRNCPY(bshared->sname, sname) != APR_SUCCESS) {
+        if (do_malloc) free(bshared);
         return apr_psprintf(p, "balancer safe-name (%s) too long", sname);
     }
     bshared->hash.def = ap_proxy_hashfunc(bshared->name, PROXY_HASHFUNC_DEFAULT);