summaryrefslogtreecommitdiffstats
path: root/modules/ldap/util_ldap_cache_mgr.c
diff options
context:
space:
mode:
authorJoe Orton <jorton@apache.org>2018-10-05 14:06:27 +0200
committerJoe Orton <jorton@apache.org>2018-10-05 14:06:27 +0200
commita185e5304cdd1e97507ebf00398280ddd57934a2 (patch)
tree7be43657fb3f1b6a1ed4ea70c75ccfae280fac35 /modules/ldap/util_ldap_cache_mgr.c
parent* modules/filters/mod_deflate.c (diff)
downloadapache2-a185e5304cdd1e97507ebf00398280ddd57934a2.tar.xz
apache2-a185e5304cdd1e97507ebf00398280ddd57934a2.zip
* modules/ldap/util_ldap_cache_mgr.c (util_ald_create_caches): Destroy
rather than leak caches if all three cannot be allocated (Coverity warning). Remove unnecessary pointer. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1842898 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--modules/ldap/util_ldap_cache_mgr.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/modules/ldap/util_ldap_cache_mgr.c b/modules/ldap/util_ldap_cache_mgr.c
index b0c4a293aa..0300a8b185 100644
--- a/modules/ldap/util_ldap_cache_mgr.c
+++ b/modules/ldap/util_ldap_cache_mgr.c
@@ -280,7 +280,7 @@ void util_ald_cache_purge(util_ald_cache_t *cache)
*/
util_url_node_t *util_ald_create_caches(util_ldap_state_t *st, const char *url)
{
- util_url_node_t curl, *newcurl = NULL;
+ util_url_node_t curl;
util_ald_cache_t *search_cache;
util_ald_cache_t *compare_cache;
util_ald_cache_t *dn_compare_cache;
@@ -313,7 +313,6 @@ util_url_node_t *util_ald_create_caches(util_ldap_state_t *st, const char *url)
/* check that all the caches initialised successfully */
if (search_cache && compare_cache && dn_compare_cache) {
-
/* The contents of this structure will be duplicated in shared
memory during the insert. So use stack memory rather than
pool memory to avoid a memory leak. */
@@ -323,11 +322,16 @@ util_url_node_t *util_ald_create_caches(util_ldap_state_t *st, const char *url)
curl.compare_cache = compare_cache;
curl.dn_compare_cache = dn_compare_cache;
- newcurl = util_ald_cache_insert(st->util_ldap_cache, &curl);
-
+ return util_ald_cache_insert(st->util_ldap_cache, &curl);
}
+ else {
+ /* util_ald_destroy_cache is a noop for a NULL argument. */
+ util_ald_destroy_cache(search_cache);
+ util_ald_destroy_cache(compare_cache);
+ util_ald_destroy_cache(dn_compare_cache);
- return newcurl;
+ return NULL;
+ }
}