mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
Add recursion check for comint password prompting
* lisp/comint.el (comint--prompt-recursion-depth): New variable (bug#33252). (comint-watch-for-password-prompt): Use it to avoid bugging out and making Emacs unusable when a shell script is prompting for passwords in an infloop.
This commit is contained in:
parent
08f0b0b98c
commit
09c805a405
1 changed files with 6 additions and 1 deletions
|
|
@ -2372,6 +2372,8 @@ Security bug: your string can still be temporarily recovered with
|
|||
|
||||
(define-obsolete-function-alias 'send-invisible #'comint-send-invisible "27.1")
|
||||
|
||||
(defvar comint--prompt-recursion-depth 0)
|
||||
|
||||
(defun comint-watch-for-password-prompt (string)
|
||||
"Prompt in the minibuffer for password and send without echoing.
|
||||
Looks for a match to `comint-password-prompt-regexp' in order
|
||||
|
|
@ -2382,7 +2384,10 @@ This function could be in the list `comint-output-filter-functions'."
|
|||
(string-match comint-password-prompt-regexp string))
|
||||
(when (string-match "^[ \n\r\t\v\f\b\a]+" string)
|
||||
(setq string (replace-match "" t t string)))
|
||||
(comint-send-invisible string)))
|
||||
(let ((comint--prompt-recursion-depth (1+ comint--prompt-recursion-depth)))
|
||||
(if (> comint--prompt-recursion-depth 10)
|
||||
(message "Password prompt recursion too deep")
|
||||
(comint-send-invisible string)))))
|
||||
|
||||
;; Low-level process communication
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue