1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-23 09:57:40 +03:00

lib:util: Avoid free'ing our own pointer

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14625

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>

Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Wed Feb  3 10:57:01 UTC 2021 on sn-devel-184
This commit is contained in:
Andreas Schneider 2021-02-02 18:10:38 +01:00 committed by Ralph Boehme
parent 00543ab3b2
commit 0bdbe50fac
2 changed files with 15 additions and 5 deletions

View File

@ -223,14 +223,25 @@ static void memcache_delete_element(struct memcache *cache,
TALLOC_FREE(e);
}
static void memcache_trim(struct memcache *cache)
static void memcache_trim(struct memcache *cache, struct memcache_element *e)
{
struct memcache_element *tail = NULL;
if (cache->max_size == 0) {
return;
}
while ((cache->size > cache->max_size) && DLIST_TAIL(cache->mru)) {
memcache_delete_element(cache, DLIST_TAIL(cache->mru));
for (tail = DLIST_TAIL(cache->mru);
(cache->size > cache->max_size) && (tail != NULL);
tail = DLIST_TAIL(cache->mru))
{
if (tail == e) {
tail = DLIST_PREV(tail);
if (tail == NULL) {
break;
}
}
memcache_delete_element(cache, tail);
}
}
@ -351,7 +362,7 @@ void memcache_add(struct memcache *cache, enum memcache_number n,
memcpy(&mtv, cache_value.data, sizeof(mtv));
cache->size += mtv.len;
}
memcache_trim(cache);
memcache_trim(cache, e);
}
void memcache_add_talloc(struct memcache *cache, enum memcache_number n,

View File

@ -1 +0,0 @@
^samba.unittests.memcache.torture_memcache_add_oversize