From: Joe Orton Date: Tue, 16 Mar 2021 12:55:18 +0000 (+0000) Subject: * modules/proxy/proxy_util.c (ap_proxy_define_balancer): X-Git-Tag: 2.5.0-alpha2-ci-test-only~991 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=becf8ef2f51ba15ee73d10e668a0325f250b19f0;p=thirdparty%2Fapache%2Fhttpd.git * modules/proxy/proxy_util.c (ap_proxy_define_balancer): 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 --- diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c index 4db1b5ecf05..cc8e8c4a41e 100644 --- a/modules/proxy/proxy_util.c +++ b/modules/proxy/proxy_util.c @@ -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);