GNU bug report logs - #31075
25.2; shell/eshell password prompt have not hide password input

Previous Next

Package: emacs;

Reported by: Rugang Chen <urugang <at> gmail.com>

Date: Fri, 6 Apr 2018 09:31:02 UTC

Severity: normal

Tags: fixed

Found in version 25.2

Fixed in version 27.1

Done: Noam Postavsky <npostavs <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Noam Postavsky <npostavs <at> gmail.com>
To: Rugang Chen <urugang <at> gmail.com>
Cc: 31075 <at> debbugs.gnu.org
Subject: bug#31075: 25.2; shell/eshell password prompt have not hide password input
Date: Mon, 25 Jun 2018 22:22:47 -0400
[Message part 1 (text/plain, inline)]
Rugang Chen <urugang <at> gmail.com> writes:

> In short, change `" +\\)"` to `" +.*\\)"`.

Right.  I'm a bit worried that this regexp is getting too many optional
parts, but I can't see a better way to handle this case.

> I have a question that why eshell dot not use same password prompt
> patter in commit-mode.

Historical accident, probably. 

> (setq eshell-password-prompt-regexp comint-password-prompt-regexp)

Maybe we should go the other way around though, the eshell regexp looks
much simpler (the patch below does not unify them in either direction).

[v1-0001-Detect-Chinese-sudo-password-prompts-Bug-31075.patch (text/x-diff, inline)]
From 099168a7560265ca5ef940879bc4643ba396defd Mon Sep 17 00:00:00 2001
From: Noam Postavsky <npostavs <at> gmail.com>
Date: Mon, 25 Jun 2018 19:11:41 -0400
Subject: [PATCH v1] 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   | 2 +-
 test/lisp/comint-tests.el | 1 +
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/lisp/comint.el b/lisp/comint.el
index 71a2b5eca5..03c1193f13 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -360,7 +360,8 @@ comint-password-prompt-regexp
       "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 bbb74c3d86..80e22e52a2 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -182,7 +182,7 @@ eshell-preoutput-filter-functions
   :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
diff --git a/test/lisp/comint-tests.el b/test/lisp/comint-tests.el
index 64898888ba..e8c79b9ed7 100644
--- a/test/lisp/comint-tests.el
+++ b/test/lisp/comint-tests.el
@@ -36,6 +36,7 @@ comint-testsuite-password-strings
     "Enter same passphrase again: "     ; ssh-keygen
     "Passphrase for key root <at> GNU.ORG: " ; plink
     "[sudo] password for user:" ; Ubuntu sudo
+    "[sudo] user 的密码:" ; localized
     "Password (again):"
     "Enter password:"
     "Mot de Passe:" ; localized
-- 
2.11.0


This bug report was last modified 6 years and 275 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.