From: Howard Chu Date: Tue, 5 Jul 2022 02:49:34 +0000 (+0100) Subject: ITS#9876 Coverity fixes: plug memleaks X-Git-Tag: OPENLDAP_REL_ENG_2_5_13~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27043804cf2a28b90b895efadb7a09661023fbcd;p=thirdparty%2Fopenldap.git ITS#9876 Coverity fixes: plug memleaks --- diff --git a/libraries/libldap/deref.c b/libraries/libldap/deref.c index 801954eb92..7d3471ad34 100644 --- a/libraries/libldap/deref.c +++ b/libraries/libldap/deref.c @@ -193,6 +193,7 @@ ldap_parse_derefresponse_control( dr = LDAP_CALLOC( 1, sizeof(LDAPDerefRes) ); if ( dr == NULL ) { ldap_derefresponse_free( drhead ); + ber_free( ber, 1 ); *drp2 = NULL; ld->ld_errno = LDAP_NO_MEMORY; return ld->ld_errno; diff --git a/libraries/libldap/ldif.c b/libraries/libldap/ldif.c index 900a979607..57e44f8c7e 100644 --- a/libraries/libldap/ldif.c +++ b/libraries/libldap/ldif.c @@ -729,7 +729,8 @@ ldif_open( if ( fp ) { lfp = ber_memalloc( sizeof( LDIFFP )); if ( lfp == NULL ) { - return NULL; + fclose( fp ); + return NULL; } lfp->fp = fp; lfp->prev = NULL; diff --git a/libraries/libldap/turn.c b/libraries/libldap/turn.c index 565b449af5..7725f01d0d 100644 --- a/libraries/libldap/turn.c +++ b/libraries/libldap/turn.c @@ -44,7 +44,7 @@ ldap_turn( { #ifdef LDAP_EXOP_X_TURN BerElement *turnvalber = NULL; - struct berval *turnvalp = NULL; + struct berval turnval; int rc; turnvalber = ber_alloc_t( LBER_USE_DER ); @@ -53,10 +53,10 @@ ldap_turn( } else { ber_printf( turnvalber, "{s}", identifier ); } - ber_flatten( turnvalber, &turnvalp ); + ber_flatten2( turnvalber, &turnval, 0 ); rc = ldap_extended_operation( ld, LDAP_EXOP_X_TURN, - turnvalp, sctrls, cctrls, msgidp ); + &turnval, sctrls, cctrls, msgidp ); ber_free( turnvalber, 1 ); return rc; #else @@ -74,7 +74,7 @@ ldap_turn_s( { #ifdef LDAP_EXOP_X_TURN BerElement *turnvalber = NULL; - struct berval *turnvalp = NULL; + struct berval turnval; int rc; turnvalber = ber_alloc_t( LBER_USE_DER ); @@ -83,10 +83,10 @@ ldap_turn_s( } else { ber_printf( turnvalber, "{s}", identifier ); } - ber_flatten( turnvalber, &turnvalp ); + ber_flatten2( turnvalber, &turnval, 0 ); rc = ldap_extended_operation_s( ld, LDAP_EXOP_X_TURN, - turnvalp, sctrls, cctrls, NULL, NULL ); + &turnval, sctrls, cctrls, NULL, NULL ); ber_free( turnvalber, 1 ); return rc; #else diff --git a/libraries/libldap/txn.c b/libraries/libldap/txn.c index 66b22e8737..6409002344 100644 --- a/libraries/libldap/txn.c +++ b/libraries/libldap/txn.c @@ -68,7 +68,7 @@ ldap_txn_end( { int rc; BerElement *txnber = NULL; - struct berval *txnval = NULL; + struct berval txnval; assert( txnid != NULL ); @@ -80,10 +80,10 @@ ldap_txn_end( ber_printf( txnber, "{bON}", commit, txnid ); } - ber_flatten( txnber, &txnval ); + ber_flatten2( txnber, &txnval, 0 ); rc = ldap_extended_operation( ld, LDAP_EXOP_TXN_END, - txnval, sctrls, cctrls, msgidp ); + &txnval, sctrls, cctrls, msgidp ); ber_free( txnber, 1 ); return rc; @@ -100,7 +100,7 @@ ldap_txn_end_s( { int rc; BerElement *txnber = NULL; - struct berval *txnval = NULL; + struct berval txnval; struct berval *retdata = NULL; if ( retidp != NULL ) *retidp = -1; @@ -113,10 +113,10 @@ ldap_txn_end_s( ber_printf( txnber, "{bON}", commit, txnid ); } - ber_flatten( txnber, &txnval ); + ber_flatten2( txnber, &txnval, 0 ); rc = ldap_extended_operation_s( ld, LDAP_EXOP_TXN_END, - txnval, sctrls, cctrls, NULL, &retdata ); + &txnval, sctrls, cctrls, NULL, &retdata ); ber_free( txnber, 1 );