sam.c: Make NTLM login set logonCount when unset
authorGarming Sam <garming@catalyst.net.nz>
Fri, 7 Apr 2017 02:41:05 +0000 (14:41 +1200)
committerGarming Sam <garming@samba.org>
Thu, 13 Apr 2017 05:29:17 +0000 (07:29 +0200)
Previously, it only bothered if it was being incremented. Now on first
logon, it should turn the unset logonCount to 0.

Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/auth/sam.c

index 7df23d55d801524723a0b2897ce94f06057444fa..8e84e3e4e6d8a63a3a4ffdbdc9f4e3aa3628cc60 100644 (file)
@@ -901,6 +901,16 @@ NTSTATUS authsam_logon_success_accounting(struct ldb_context *sam_ctx,
                        TALLOC_FREE(mem_ctx);
                        return NT_STATUS_NO_MEMORY;
                }
+       } else {
+               /* Set an unset logonCount to 0 on first successful login */
+               if (ldb_msg_find_ldb_val(msg, "logonCount") == NULL) {
+                       ret = samdb_msg_add_int(sam_ctx, msg_mod, msg_mod,
+                                               "logonCount", 0);
+                       if (ret != LDB_SUCCESS) {
+                               TALLOC_FREE(mem_ctx);
+                               return NT_STATUS_NO_MEMORY;
+                       }
+               }
        }
 
        ret = samdb_rodc(sam_ctx, &am_rodc);