]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
CVE-2021-20251 s4-rpc_server: Check badPwdCount update return status
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Sat, 9 Jul 2022 03:55:02 +0000 (15:55 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 12 Sep 2022 23:07:37 +0000 (23:07 +0000)
If the account has been locked out in the meantime (indicated by
NT_STATUS_ACCOUNT_LOCKED_OUT), we should return the appropriate error
code.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14611

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
source4/rpc_server/samr/samr_password.c

index 09d7501d47465c2e008c05e46f04ec75ba102538..e55d5c28b5c3d41d59a7338b17e12d870ec51b51 100644 (file)
@@ -485,7 +485,11 @@ failed:
 
        /* Only update the badPwdCount if we found the user */
        if (NT_STATUS_EQUAL(status, NT_STATUS_WRONG_PASSWORD)) {
-               authsam_update_bad_pwd_count(sam_ctx, msg, ldb_get_default_basedn(sam_ctx));
+               NTSTATUS bad_pwd_status = authsam_update_bad_pwd_count(
+                       sam_ctx, msg, ldb_get_default_basedn(sam_ctx));
+               if (NT_STATUS_EQUAL(bad_pwd_status, NT_STATUS_ACCOUNT_LOCKED_OUT)) {
+                       status = bad_pwd_status;
+               }
        } else if (NT_STATUS_EQUAL(status, NT_STATUS_NO_SUCH_USER)) {
                /* Don't give the game away:  (don't allow anonymous users to prove the existence of usernames) */
                status = NT_STATUS_WRONG_PASSWORD;