From 1a7bab05e8667756cf30d07ff86f97375fd6168b Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 28 Jul 1998 19:28:43 +0000 Subject: [PATCH] Don't use raw_input() to ask for the password; this puts the password in the GNU readline history buffer which is not such a great idea. --- Lib/getpass.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Lib/getpass.py b/Lib/getpass.py index d67240eaf8a..be7a2f9049b 100644 --- a/Lib/getpass.py +++ b/Lib/getpass.py @@ -36,7 +36,7 @@ def getpass(prompt='Password: '): new[3] = new[3] & ~TERMIOS.ECHO # 3 == 'lflags' try: termios.tcsetattr(fd, TERMIOS.TCSADRAIN, new) - passwd = raw_input(prompt) + passwd = _raw_input(prompt) finally: termios.tcsetattr(fd, TERMIOS.TCSADRAIN, old) @@ -66,7 +66,22 @@ def win_getpass(prompt='Password: '): def default_getpass(prompt='Password: '): - return raw_input(prompt) + return _raw_input(prompt) + + +def _raw_input(prompt=""): + # A raw_input() replacement that doesn't save the string in the + # GNU readline history. + import sys + prompt = str(prompt) + if prompt: + sys.stdout.write(prompt) + line = sys.stdin.readline() + if not line: + raise EOFError + if line[-1] == '\n': + line = line[:-1] + return line def getuser():