]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9472 Fix cn=config memory leaks in slapo-datamorph
authorOndřej Kuzník <ondra@mistotebe.net>
Tue, 15 Jun 2021 10:19:21 +0000 (11:19 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 21 Jun 2021 16:36:06 +0000 (16:36 +0000)
contrib/slapd-modules/datamorph/datamorph.c

index 164f81d23a518747498dc56fa430238e36fb4996..2f32c9239971b5a9498f3341b7661e5150ec34eb 100644 (file)
@@ -1772,12 +1772,12 @@ datamorph_ldadd_info_cleanup( ConfigArgs *ca )
        transformation_info *info = ca->ca_private;
 
        if ( ca->reply.err != LDAP_SUCCESS ) {
+               ch_free( info );
                return LDAP_SUCCESS;
        }
 
        if ( ldap_avl_insert( &ov->transformations, info, transformation_info_cmp,
                        ldap_avl_dup_error ) ) {
-               ch_free( info );
                return LDAP_CONSTRAINT_VIOLATION;
        }
        return LDAP_SUCCESS;
@@ -1828,12 +1828,14 @@ datamorph_ldadd_mapping_cleanup( ConfigArgs *ca )
        transformation_info *info = mapping->transformation;
 
        if ( ca->reply.err != LDAP_SUCCESS ) {
+               if ( mapping ) {
+                       datamorph_mapping_free( mapping );
+               }
                return LDAP_SUCCESS;
        }
 
        if ( ldap_avl_insert( &info->ti_enum.to_db, mapping, transformation_mapping_cmp,
                        ldap_avl_dup_error ) ) {
-               datamorph_mapping_free( mapping );
                return LDAP_CONSTRAINT_VIOLATION;
        }
        info->ti_enum.from_db[mapping->db_value] = mapping->wire_value;