r796: fixed samr_OemChangePasswordUser2() to replace attributes, not add
authorAndrew Tridgell <tridge@samba.org>
Thu, 20 May 2004 13:44:46 +0000 (13:44 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:53:51 +0000 (12:53 -0500)
source/rpc_server/samr/dcesrv_samr.c

index 30856c6ce9b41fcb674d6b96309ab1f22cfa0d77..4d68212073ce66f9244f3a99d853198801025619 100644 (file)
@@ -1946,7 +1946,7 @@ static NTSTATUS samr_OemChangePasswordUser2(struct dcesrv_call_state *dce_call,
        struct samr_CryptPassword *pwbuf = r->in.password;
        void *sam_ctx;
        const char *user_dn, *domain_dn;
        struct samr_CryptPassword *pwbuf = r->in.password;
        void *sam_ctx;
        const char *user_dn, *domain_dn;
-       int ret;
+       int ret, i;
        struct ldb_message **res, mod;
        const char * const attrs[] = { "objectSid", "lmPwdHash", NULL };
        const char *domain_sid;
        struct ldb_message **res, mod;
        const char * const attrs[] = { "objectSid", "lmPwdHash", NULL };
        const char *domain_sid;
@@ -2027,6 +2027,11 @@ static NTSTATUS samr_OemChangePasswordUser2(struct dcesrv_call_state *dce_call,
                return status;
        }
 
                return status;
        }
 
+       /* mark all the message elements as LDB_FLAG_MOD_REPLACE */
+       for (i=0;i<mod.num_elements;i++) {
+               mod.elements[i].flags = LDB_FLAG_MOD_REPLACE;
+       }
+
        /* modify the samdb record */
        ret = samdb_modify(sam_ctx, mem_ctx, &mod);
        if (ret != 0) {
        /* modify the samdb record */
        ret = samdb_modify(sam_ctx, mem_ctx, &mod);
        if (ret != 0) {