From: Yann Ylavic Date: Tue, 29 Mar 2016 15:48:00 +0000 (+0000) Subject: mod_proxy_express: Fix possible use of DB handle after close. X-Git-Tag: 2.5.0-alpha~1821 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0d26b59647842ebc97578f084ca7feb62751afbf;p=thirdparty%2Fapache%2Fhttpd.git mod_proxy_express: Fix possible use of DB handle after close. PR 59230. Submitted by: Petr Reviewed/Committed by: ylavic git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1737014 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 526b318f20b..b33a29ca701 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) mod_proxy_express: Fix possible use of DB handle after close. PR 59230. + [Petr ] + *) mod_http2: more efficient passing of response bodies with less contention and file bucket forwarding. [Stefan Eissing] diff --git a/modules/proxy/mod_proxy_express.c b/modules/proxy/mod_proxy_express.c index 9904fbbd7e8..ec4b94a67d7 100644 --- a/modules/proxy/mod_proxy_express.c +++ b/modules/proxy/mod_proxy_express.c @@ -145,13 +145,11 @@ static int xlate_name(request_rec *r) key.dsize = strlen(key.dptr); rv = apr_dbm_fetch(db, key, &val); - apr_dbm_close(db); - if (rv != APR_SUCCESS) { - return DECLINED; + if (rv == APR_SUCCESS) { + backend = apr_pstrmemdup(r->pool, val.dptr, val.dsize); } - - backend = apr_pstrmemdup(r->pool, val.dptr, val.dsize); - if (!backend) { + apr_dbm_close(db); + if (rv != APR_SUCCESS || !backend) { return DECLINED; }