From 161139a42c02cce051c51fb80c6ae00c9e6beaa6 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Mon, 25 Jun 2018 19:11:41 -0400 Subject: [PATCH] Detect Chinese sudo password prompts (Bug#31075) * lisp/comint.el (comint-password-prompt-regexp): Allow text between the prompt prefix and password equivalent. * lisp/eshell/esh-mode.el (eshell-password-prompt-regexp): Accept some unicode alternatives to ":". * test/lisp/comint-tests.el (comint-testsuite-password-strings): Add test case. --- lisp/comint.el | 3 ++- lisp/eshell/esh-mode.el | 3 ++- test/lisp/comint-tests.el | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/comint.el b/lisp/comint.el index 51c7e81e09a..5928804fe73 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -360,7 +360,8 @@ This variable is buffer-local." "Kerberos" "CVS" "UNIX" " SMB" "LDAP" "PEM" "SUDO" "[sudo]" "Repeat" "Bad" "Retype") t) - " +\\)" + ;; Allow for user name to precede password equivalent (Bug#31075). + " +.*\\)" "\\(?:" (regexp-opt password-word-equivalents) "\\|Response\\)" "\\(?:\\(?:, try\\)? *again\\| (empty for no passphrase)\\| (again)\\)?" ;; "[[:alpha:]]" used to be "for", which fails to match non-English. diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el index 9f854c7d907..0c25f412c2a 100644 --- a/lisp/eshell/esh-mode.el +++ b/lisp/eshell/esh-mode.el @@ -182,10 +182,11 @@ inserted. They return the string as it should be inserted." :group 'eshell-mode) (defcustom eshell-password-prompt-regexp - (format "\\(%s\\).*:\\s *\\'" (regexp-opt password-word-equivalents)) + (format "\\(%s\\)[^::៖]*[::៖]\\s *\\'" (regexp-opt password-word-equivalents)) "Regexp matching prompts for passwords in the inferior process. This is used by `eshell-watch-for-password-prompt'." :type 'regexp + :version "27.1" :group 'eshell-mode) (defcustom eshell-skip-prompt-function nil diff --git a/test/lisp/comint-tests.el b/test/lisp/comint-tests.el index 366fcc9ad89..eab2709cea9 100644 --- a/test/lisp/comint-tests.el +++ b/test/lisp/comint-tests.el @@ -36,6 +36,7 @@ "Enter same passphrase again: " ; ssh-keygen "Passphrase for key root@GNU.ORG: " ; plink "[sudo] password for user:" ; Ubuntu sudo + "[sudo] user 的密码:" ; localized "Password (again):" "Enter password:" "Mot de Passe :" ; localized (Bug#29729) -- 2.39.2