From: Pierangelo Masarati Date: Thu, 6 Apr 2006 19:13:41 +0000 (+0000) Subject: don't leak if realloc fails (ITS#4477) X-Git-Tag: OPENLDAP_REL_ENG_2_4_BP X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=b03d8abcdeb6201bbd656838c24a74e40c64f273;p=openldap don't leak if realloc fails (ITS#4477) --- 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) {