]> git.sur5r.net Git - openldap/commitdiff
fix one-time leak (coverity)
authorPierangelo Masarati <ando@openldap.org>
Mon, 3 Sep 2007 16:27:01 +0000 (16:27 +0000)
committerPierangelo Masarati <ando@openldap.org>
Mon, 3 Sep 2007 16:27:01 +0000 (16:27 +0000)
servers/slapd/overlays/memberof.c

index 48b7f1a2363d4665f6dad5be2f5c152b99300a7c..5bbe2a2dbf7961435c865aa2ec1ebc20012223f0 100644 (file)
@@ -1441,14 +1441,12 @@ memberof_db_init(
        ConfigReply     *cr )
 {
        slap_overinst   *on = (slap_overinst *)be->bd_info;
-       memberof_t      *mo;
+       memberof_t      tmp_mo = { 0 }, *mo;
 
        int             rc;
        const char      *text = NULL;
 
-       mo = (memberof_t *)ch_calloc( 1, sizeof( memberof_t ) );
-
-       rc = slap_str2ad( SLAPD_MEMBEROF_ATTR, &mo->mo_ad_memberof, &text );
+       rc = slap_str2ad( SLAPD_MEMBEROF_ATTR, &tmp_mo.mo_ad_memberof, &text );
        if ( rc != LDAP_SUCCESS ) {
                Debug( LDAP_DEBUG_ANY,
                        "memberof_db_init: "
@@ -1457,7 +1455,7 @@ memberof_db_init(
                return rc;
        }
 
-       rc = slap_str2ad( SLAPD_GROUP_ATTR, &mo->mo_ad_member, &text );
+       rc = slap_str2ad( SLAPD_GROUP_ATTR, &tmp_mo.mo_ad_member, &text );
        if ( rc != LDAP_SUCCESS ) {
                Debug( LDAP_DEBUG_ANY,
                        "memberof_db_init: "
@@ -1466,8 +1464,8 @@ memberof_db_init(
                return rc;
        }
 
-       mo->mo_oc_group = oc_find( SLAPD_GROUP_CLASS );
-       if ( mo->mo_oc_group == NULL ) {
+       tmp_mo.mo_oc_group = oc_find( SLAPD_GROUP_CLASS );
+       if ( tmp_mo.mo_oc_group == NULL ) {
                Debug( LDAP_DEBUG_ANY,
                        "memberof_db_init: "
                        "unable to find objectClass=\"%s\"\n",
@@ -1475,6 +1473,9 @@ memberof_db_init(
                return 1;
        }
 
+       mo = (memberof_t *)ch_calloc( 1, sizeof( memberof_t ) );
+       *mo = tmp_mo;
+
        on->on_bi.bi_private = (void *)mo;
 
        return 0;