From 35c57c9b337233be39d40072091587208b5b3142 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 14 Jan 2015 10:13:16 +0000 Subject: [PATCH] check ber_scanf(syncUUIDs) result (coverity) --- servers/slapd/syncrepl.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index 6ad8dc5943..c694856e2e 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -1297,19 +1297,21 @@ do_syncrep2( ber_scanf( ber, "b", &refreshDeletes ); } syncUUIDs = NULL; - ber_scanf( ber, "[W]", &syncUUIDs ); + rc = ber_scanf( ber, "[W]", &syncUUIDs ); ber_scanf( ber, /*"{"*/ "}" ); - if ( refreshDeletes ) { - syncrepl_del_nonpresent( op, si, syncUUIDs, - &syncCookie, m ); - ber_bvarray_free_x( syncUUIDs, op->o_tmpmemctx ); - } else { - int i; - for ( i = 0; !BER_BVISNULL( &syncUUIDs[i] ); i++ ) { - (void)avl_presentlist_insert( si, &syncUUIDs[i] ); - slap_sl_free( syncUUIDs[i].bv_val, op->o_tmpmemctx ); + if ( rc != LBER_ERROR ) { + if ( refreshDeletes ) { + syncrepl_del_nonpresent( op, si, syncUUIDs, + &syncCookie, m ); + ber_bvarray_free_x( syncUUIDs, op->o_tmpmemctx ); + } else { + int i; + for ( i = 0; !BER_BVISNULL( &syncUUIDs[i] ); i++ ) { + (void)avl_presentlist_insert( si, &syncUUIDs[i] ); + slap_sl_free( syncUUIDs[i].bv_val, op->o_tmpmemctx ); + } + slap_sl_free( syncUUIDs, op->o_tmpmemctx ); } - slap_sl_free( syncUUIDs, op->o_tmpmemctx ); } slap_sync_cookie_free( &syncCookie, 0 ); break; -- 2.39.5