s3-pdb_ipa: Create DN for new object
authorSumit Bose <sbose@redhat.com>
Wed, 23 Mar 2011 11:09:22 +0000 (12:09 +0100)
committerGünther Deschner <gd@samba.org>
Wed, 6 Apr 2011 09:53:57 +0000 (11:53 +0200)
Signed-off-by: Günther Deschner <gd@samba.org>
source3/passdb/pdb_ipa.c

index e276fa9801a44ab5021c62d6b4cdfeb9d4b47900..c98f33eb43bf825c0d6c2ffb2b0a97eee16d5e2f 100644 (file)
@@ -1292,7 +1292,25 @@ static NTSTATUS ipasam_create_user(struct pdb_methods *pdb_methods,
        if (NT_STATUS_IS_OK(status)) {
                ldap_op = LDAP_MOD_REPLACE;
        } else if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_USER)) {
+               char *escape_username;
                ldap_op = LDAP_MOD_ADD;
+               escape_username = escape_rdn_val_string_alloc(name);
+               if (!escape_username) {
+                       return NT_STATUS_NO_MEMORY;
+               }
+               if (name[strlen(name)-1] == '$') {
+                       dn = talloc_asprintf(tmp_ctx, "uid=%s,%s",
+                                            escape_username,
+                                            lp_ldap_machine_suffix());
+               } else {
+                       dn = talloc_asprintf(tmp_ctx, "uid=%s,%s",
+                                            escape_username,
+                                            lp_ldap_user_suffix());
+               }
+               SAFE_FREE(escape_username);
+               if (!dn) {
+                       return NT_STATUS_NO_MEMORY;
+               }
        } else {
                return status;
        }