s4:samr RPC server - dcesrv_samr_SetUserInfo() - password expiration
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Sun, 9 Jun 2013 08:46:06 +0000 (10:46 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 10 Jun 2013 03:40:21 +0000 (05:40 +0200)
Also on level 26 this has to be handled the same as on levels 21, 23, 25.

Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/rpc_server/samr/dcesrv_samr.c

index 3826075ebcd08968c12565bb9ff6888a9cd2f5d6..7279fe02f724f1ff6defa3a749b3cbcbe67c260a 100644 (file)
@@ -3510,8 +3510,14 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALL
                }
 
                if (r->in.info->info26.password_expired > 0) {
+                       NTTIME t = 0;
                        struct ldb_message_element *set_el;
-                       if (samdb_msg_add_uint64(sam_ctx, mem_ctx, msg, "pwdLastSet", 0) != LDB_SUCCESS) {
+                       if (r->in.info->info26.password_expired
+                                       == PASS_DONT_CHANGE_AT_NEXT_LOGON) {
+                               unix_to_nt_time(&t, time(NULL));
+                       }
+                       if (samdb_msg_add_uint64(sam_ctx, mem_ctx, msg,
+                                                "pwdLastSet", t) != LDB_SUCCESS) {
                                return NT_STATUS_NO_MEMORY;
                        }
                        set_el = ldb_msg_find_element(msg, "pwdLastSet");