From 9a76da4fef36374b24491412b61d965ab2cc98d9 Mon Sep 17 00:00:00 2001 From: Joe Orton Date: Thu, 28 Jul 2005 10:45:59 +0000 Subject: [PATCH] * modules/ldap/util_ldap_cache_mgr.c (util_ald_cache_insert): Fix a cache corruption case: ensure that there is room in the cache for a copy of the payload before inserting the node. PR: 34209 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@225746 13f79535-47bb-0310-9956-ffa450edef68 --- modules/ldap/util_ldap_cache_mgr.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/ldap/util_ldap_cache_mgr.c b/modules/ldap/util_ldap_cache_mgr.c index 54021a9f37..794b2f50c3 100644 --- a/modules/ldap/util_ldap_cache_mgr.c +++ b/modules/ldap/util_ldap_cache_mgr.c @@ -406,11 +406,18 @@ void *util_ald_cache_insert(util_ald_cache_t *cache, void *payload) return NULL; } + /* Take a copy of the payload before proceeeding. */ + payload = (*cache->copy)(cache, payload); + if (!payload) { + util_ald_free(cache, node); + return NULL; + } + /* populate the entry */ cache->inserts++; hashval = (*cache->hash)(payload) % cache->size; node->add_time = apr_time_now(); - node->payload = (*cache->copy)(cache, payload); + node->payload = payload; node->next = cache->nodes[hashval]; cache->nodes[hashval] = node; -- 2.40.0