Fix installutils.get_password without a TTY

If stdin is a TTY, ipaserver.install.installutils uses getpass and all
is well. Without a TTY, though, there were two problems:

* The prompt was not printed
* On end of file, an empty string was returned, which caused read_password
  to enter an infinite loop.

Fix both problems.

https://fedorahosted.org/freeipa/ticket/3824
This commit is contained in:
Petr Viktorin 2013-07-30 13:07:18 +02:00 committed by Martin Kosek
parent f954f2d1b9
commit fb08402b71

View File

@ -256,7 +256,13 @@ def get_password(prompt):
if os.isatty(sys.stdin.fileno()):
return getpass.getpass(prompt)
else:
return sys.stdin.readline().rstrip()
sys.stdout.write(prompt)
sys.stdout.flush()
line = sys.stdin.readline()
if not line:
raise EOFError()
return line.rstrip()
def _read_password_default_validator(password):
if len(password) < 8: