From: Kurt Zeilenga Date: Sat, 3 Nov 2001 22:07:41 +0000 (+0000) Subject: Fix realloc bug (ITS#1410) X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~904 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9bd4308edfd97b711dbe456edf188557067ca61b;p=openldap Fix realloc bug (ITS#1410) --- diff --git a/libraries/liblber/decode.c b/libraries/liblber/decode.c index 1e0132d732..db5a65ade4 100644 --- a/libraries/liblber/decode.c +++ b/libraries/liblber/decode.c @@ -590,9 +590,17 @@ ber_scanf ( BerElement *ber, tag != LBER_DEFAULT && rc != LBER_DEFAULT; tag = ber_next_element( ber, &len, last ) ) { + void *save = *sss; + *sss = (char **) LBER_REALLOC( *sss, (j + 2) * sizeof(char *) ); + if( *sss == NULL ) { + LBER_MEMFREE( save ); + rc = LBER_DEFAULT; + goto breakout; + } + rc = ber_get_stringa( ber, &((*sss)[j]) ); j++; } @@ -608,9 +616,17 @@ ber_scanf ( BerElement *ber, tag != LBER_DEFAULT && rc != LBER_DEFAULT; tag = ber_next_element( ber, &len, last ) ) { + void *save = *bv; + *bv = (struct berval **) LBER_REALLOC( *bv, (j + 2) * sizeof(struct berval *) ); + if( *bv == NULL ) { + LBER_MEMFREE( save ); + rc = LBER_DEFAULT; + goto breakout; + } + rc = ber_get_stringal( ber, &((*bv)[j]) ); j++; } @@ -649,6 +665,7 @@ ber_scanf ( BerElement *ber, } } +breakout: va_end( ap ); if ( rc == LBER_DEFAULT ) {