]> git.eshelyaron.com Git - emacs.git/commitdiff
(read-passwd): Clear Lisp memory holding password.
authorGerd Moellmann <gerd@gnu.org>
Thu, 15 Feb 2001 09:55:47 +0000 (09:55 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 15 Feb 2001 09:55:47 +0000 (09:55 +0000)
lisp/ChangeLog
lisp/subr.el

index 084022ba6a14d32e0da80a20610390d8ed62a680..a176015c8db8c6b48df2fb8a69bfdaa24a8d5e2a 100644 (file)
@@ -1,3 +1,7 @@
+2001-02-15  Gerd Moellmann  <gerd@gnu.org>
+
+       * subr.el (read-passwd): Clear Lisp memory holding password.
+
 2001-02-15  Miles Bader  <miles@gnu.org>
 
        * info.el (Info-copy-current-node-name): New function.
index 2d6a72a6ac56eca1958d40170a4c5bf441778eec..269ff1f2b1f274fc5ef1a3445865824ee8fc3011 100644 (file)
@@ -1,6 +1,7 @@
 ;;; subr.el --- basic lisp subroutines for Emacs
 
-;; Copyright (C) 1985, 86, 92, 94, 95, 99, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 86, 92, 94, 95, 99, 2000, 2001
+;;   Free Software Foundation, Inc.
 
 ;; This file is part of GNU Emacs.
 
@@ -905,7 +906,11 @@ Optional DEFAULT is a default password to use instead of empty input."
          (let ((first (read-passwd prompt nil default))
                (second (read-passwd "Confirm password: " nil default)))
            (if (equal first second)
-               (setq success first)
+               (progn
+                 (and (arrayp second) (fillarray second ?\0))
+                 (setq success first))
+             (and (arrayp first) (fillarray first ?\0))
+             (and (arrayp second) (fillarray second ?\0))
              (message "Password not repeated accurately; please start over")
              (sit-for 1))))
        success)
@@ -919,11 +924,20 @@ Optional DEFAULT is a default password to use instead of empty input."
                    (setq c (read-char-exclusive nil t))
                    (and (/= c ?\r) (/= c ?\n) (/= c ?\e)))
        (if (= c ?\C-u)
-           (setq pass "")
+           (progn
+             (and (arrayp pass) (fillarray pass ?\0))
+             (setq pass ""))
          (if (and (/= c ?\b) (/= c ?\177))
-             (setq pass (concat pass (char-to-string c)))
+             (let* ((new-char (char-to-string c))
+                    (new-pass (concat pass new-char)))
+               (and (arrayp pass) (fillarray pass ?\0))
+               (fillarray new-char ?\0)
+               (setq c ?\0)
+               (setq pass new-pass))
            (if (> (length pass) 0)
-               (setq pass (substring pass 0 -1))))))
+               (let ((new-pass (substring pass 0 -1)))
+                 (and (arrayp pass) (fillarray pass ?\0))
+                 (setq pass new-pass))))))
       (clear-this-command-keys)
       (message nil)
       (or pass default ""))))