From eaa31467e1ba1cc9e724cb39abc0caea4299e314 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Thu, 10 Oct 2002 03:22:23 +0000 Subject: [PATCH] Fix memory leak --- libraries/liblunicode/ucstr.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/liblunicode/ucstr.c b/libraries/liblunicode/ucstr.c index bc46a95169..69fce783f8 100644 --- a/libraries/liblunicode/ucstr.c +++ b/libraries/liblunicode/ucstr.c @@ -98,7 +98,7 @@ struct berval * UTF8bvnormalize( unsigned flags ) { int i, j, len, clen, outpos, ucsoutlen, outsize, last; - char *out, *s; + char *out, *outtmp, *s; unsigned long *ucs, *p, *ucsout; unsigned casefold = flags & LDAP_UTF8_CASEFOLD; @@ -227,15 +227,21 @@ struct berval * UTF8bvnormalize( 6 bytes and terminator */ if ( outsize - outpos < 7 ) { outsize = ucsoutlen - j + outpos + 6; - out = (char *) realloc( out, outsize ); - if ( out == NULL ) { + outtmp = (char *) realloc( out, outsize ); + if ( outtmp == NULL ) { + free( out ); free( ucs ); + free( ucsout ); return NULL; } + out = outtmp; } outpos += ldap_x_ucs4_to_utf8( ucsout[j], &out[outpos] ); } } + + free( ucsout ); + ucsout = NULL; if ( i == len ) { break; -- 2.39.5