s3:ldap: Leave add machine code early for pre-existing accounts
[nivanova/samba-autobuild/.git] / source3 / libads / ldap.c
index 8fade1027b77479cadbb54b4abfa5016af78cd7a..4f3d43b02b1c04ed80750bdb4ee78da6e3ae7b1d 100644 (file)
@@ -2120,6 +2120,15 @@ ADS_STATUS ads_create_machine_acct(ADS_STRUCT *ads,
                goto done;
        }
 
+       ret = ads_find_machine_acct(ads, &res, machine_escaped);
+       ads_msgfree(ads, res);
+       if (ADS_ERR_OK(ret)) {
+               DBG_DEBUG("Host account for %s already exists.\n",
+                               machine_escaped);
+               ret = ADS_ERROR_LDAP(LDAP_ALREADY_EXISTS);
+               goto done;
+       }
+
        new_dn = talloc_asprintf(ctx, "cn=%s,%s", machine_escaped, org_unit);
        samAccountName = talloc_asprintf(ctx, "%s$", machine_name);
 
@@ -2155,7 +2164,6 @@ ADS_STATUS ads_create_machine_acct(ADS_STRUCT *ads,
 
 done:
        SAFE_FREE(machine_escaped);
-       ads_msgfree(ads, res);
        talloc_destroy(ctx);
 
        return ret;