From b03d8abcdeb6201bbd656838c24a74e40c64f273 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Thu, 6 Apr 2006 19:13:41 +0000 Subject: [PATCH] don't leak if realloc fails (ITS#4477) --- servers/slapd/sl_malloc.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/servers/slapd/sl_malloc.c b/servers/slapd/sl_malloc.c index 8c204e50a4..b19507ab2a 100644 --- a/servers/slapd/sl_malloc.c +++ b/servers/slapd/sl_malloc.c @@ -261,6 +261,10 @@ slap_sl_malloc( unsigned long diff; int i, j; +#ifdef SLAP_NO_SL_MALLOC + return ber_malloc_x( size, NULL ); +#endif + /* ber_set_option calls us like this */ if (!ctx) return ber_memalloc_x(size, NULL); @@ -365,6 +369,10 @@ slap_sl_realloc(void *ptr, ber_len_t size, void *ctx) if (ptr == NULL) return slap_sl_malloc(size, ctx); +#ifdef SLAP_NO_SL_MALLOC + return ber_memrealloc_x( ptr, size, NULL ); +#endif + /* Not our memory? */ if (!sh || ptr < sh->sh_base || ptr >= sh->sh_end) { /* duplicate of realloc behavior, oh well */ @@ -434,6 +442,11 @@ slap_sl_free(void *ptr, void *ctx) if (!ptr) return; +#ifdef SLAP_NO_SL_MALLOC + ber_memfree_x( ptr, NULL ); + return; +#endif + if (!sh || ptr < sh->sh_base || ptr >= sh->sh_end) { ber_memfree_x(ptr, NULL); } else if (sh->sh_stack && (char *)ptr + p[-1] == sh->sh_last) { -- 2.39.5