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.
This commit is contained in:
Guido van Rossum 1998-07-28 19:28:43 +00:00
parent ec8c8c2ef2
commit 1a7bab05e8
1 changed files with 17 additions and 2 deletions

View File

@ -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():