]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9876 Coverity fixes: plug memleaks
authorHoward Chu <hyc@openldap.org>
Tue, 5 Jul 2022 02:49:34 +0000 (03:49 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Thu, 7 Jul 2022 15:53:59 +0000 (15:53 +0000)
libraries/libldap/deref.c
libraries/libldap/ldif.c
libraries/libldap/turn.c
libraries/libldap/txn.c

index 801954eb9210c1c5bd5c64fa3933f57583dbc046..7d3471ad3477653806a096492db38aec9b1a4f63 100644 (file)
@@ -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;
index 900a979607bf0db9f19773117f9eb22a4e7bd0d1..57e44f8c7e46a754f09a2909bd1ee032e0beb554 100644 (file)
@@ -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;
index 565b449af5cb1495f9d18612f53795891f2914b6..7725f01d0d2e113a91fbd063d15e992ed8de8e26 100644 (file)
@@ -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
index 66b22e8737f14bbfd9845e81ca68ed2d1673a366..640900234499a9ca300a41ae1c24984b117be02e 100644 (file)
@@ -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 );