Patch from Aurélien Degrémont <adegremont@idealx.com>. "entry" is dependent
authorJeremy Allison <jra@samba.org>
Fri, 31 Oct 2003 19:16:59 +0000 (19:16 +0000)
committerJeremy Allison <jra@samba.org>
Fri, 31 Oct 2003 19:16:59 +0000 (19:16 +0000)
on "result", don't free result first.
Jeremy.
(This used to be commit c61a230c5ab7250c0812b422e0a533fbf5efbf17)

source3/passdb/pdb_ldap.c

index e0148494d339ae65b754e0a8c034f7b40efd677d..9299ca2e50e25025d1ad35110f92c58b500c21b3 100644 (file)
@@ -1983,21 +1983,22 @@ static NTSTATUS ldapsam_update_group_mapping_entry(struct pdb_methods *methods,
                return NT_STATUS_UNSUCCESSFUL;
        }
 
-       ldap_msgfree(result);
-
        if (mods == NULL) {
                DEBUG(4, ("ldapsam_update_group_mapping_entry: mods is empty: nothing to do\n"));
+               ldap_msgfree(result);
                return NT_STATUS_OK;
        }
 
        dn = smbldap_get_dn(ldap_state->smbldap_state->ldap_struct, entry);
        if (!dn) {
+               ldap_msgfree(result);
                return NT_STATUS_UNSUCCESSFUL;
        }
        rc = smbldap_modify(ldap_state->smbldap_state, dn, mods);
        SAFE_FREE(dn);
 
        ldap_mods_free(mods, True);
+       ldap_msgfree(result);
 
        if (rc != LDAP_SUCCESS) {
                char *ld_error = NULL;
@@ -2006,6 +2007,7 @@ static NTSTATUS ldapsam_update_group_mapping_entry(struct pdb_methods *methods,
                DEBUG(0, ("ldapsam_update_group_mapping_entry: failed to modify group %lu error: %s (%s)\n", (unsigned long)map->gid, 
                          ld_error ? ld_error : "(unknown)", ldap_err2string(rc)));
                SAFE_FREE(ld_error);
+               return NT_STATUS_UNSUCCESSFUL;
        }
 
        DEBUG(2, ("ldapsam_update_group_mapping_entry: successfully modified group %lu in LDAP\n", (unsigned long)map->gid));