From 9bd4308edfd97b711dbe456edf188557067ca61b Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Sat, 3 Nov 2001 22:07:41 +0000 Subject: [PATCH] Fix realloc bug (ITS#1410) --- libraries/liblber/decode.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 ) { -- 2.39.5