diff -up authconfig-6.2.8/authinfo.py.infoleak authconfig-6.2.8/authinfo.py --- authconfig-6.2.8/authinfo.py.infoleak 2017-04-25 12:54:38.801372776 +0200 +++ authconfig-6.2.8/authinfo.py 2017-04-25 12:57:42.698560450 +0200 @@ -368,7 +368,7 @@ argv_otp_auth = [ argv_succeed_if_auth = [ "uid >=", "500", # this must be the second arg - to be replaced - "quiet_success" + "quiet_success" # this will be replaced in the first entry ] argv_succeed_if_account = [ @@ -438,6 +438,10 @@ argv_lastlog_not_gdm = [ "showfailed" ] +argv_faildelay = [ + "delay=2000000" +] + # Password hashing algorithms. password_algorithms = ["descrypt", "bigcrypt", "md5", "sha256", "sha512"] @@ -457,6 +461,8 @@ pam_modules = [[] for service in (STANDA pam_modules[STANDARD] = [ [True, AUTH, LOGIC_REQUIRED, "env", []], + [True, AUTH, LOGIC_REQUIRED, + "faildelay", argv_faildelay], [False, AUTH, LOGIC_SKIPNEXT, "succeed_if", argv_succeed_if_nonlogin], [False, AUTH, LOGIC_PKCS11, @@ -468,6 +474,8 @@ pam_modules[STANDARD] = [ [False, AUTH, LOGIC_SUFFICIENT, "fprintd", []], [False, AUTH, LOGIC_SKIPNEXT_ON_FAILURE, + "succeed_if", argv_succeed_if_auth], + [False, AUTH, LOGIC_SKIPNEXT_ON_FAILURE, "localuser", []], [True, AUTH, LOGIC_SUFFICIENT, "unix", argv_unix_auth], @@ -594,9 +602,13 @@ pam_modules[POSTLOGIN] = [ pam_modules[PASSWORD_ONLY] = [ [True, AUTH, LOGIC_REQUIRED, "env", []], + [True, AUTH, LOGIC_REQUIRED, + "faildelay", argv_faildelay], [False, AUTH, LOGIC_REQUIRED, "deny", []], [False, AUTH, LOGIC_SKIPNEXT_ON_FAILURE, + "succeed_if", argv_succeed_if_auth], + [False, AUTH, LOGIC_SKIPNEXT_ON_FAILURE, "localuser", []], [True, AUTH, LOGIC_SUFFICIENT, "unix", argv_unix_auth], @@ -3948,6 +3960,8 @@ class AuthInfo: output += " broken_shadow" if name == "faillock" and stack == "auth": args = " ".join(module[ARGV]) + " " + self.faillockArgs + if name == "succeed_if" and stack == "auth" and logic == LOGIC_SKIPNEXT_ON_FAILURE: + args = args.replace("quiet_success", "quiet") if args: output += " " + args output += "\n" @@ -4035,7 +4049,9 @@ class AuthInfo: (self.enableWinbindAuth and module[NAME] == "winbind") or ((self.enableSSSDAuth or self.implicitSSSDAuth or self.enableIPAv2) and module[NAME] == "sss" and module[ARGV] != argv_sssd_missing_name) or ((self.enableSSSDAuth or self.implicitSSSDAuth or self.enableIPAv2) and - (not self.enableNIS) and module[NAME] == "localuser" and module[STACK] == AUTH) or + (not self.enableNIS) and (module[NAME] == "localuser" or + (module[NAME] == "succeed_if" and module[LOGIC] == LOGIC_SKIPNEXT_ON_FAILURE and not self.enableSysNetAuth)) + and module[STACK] == AUTH) or (self.enableLocAuthorize and module[NAME] == "localuser" and module[STACK] == ACCOUNT) or (self.enablePAMAccess and module[NAME] == "access") or (self.enableMkHomeDir and module[NAME] == "mkhomedir") or