From fb08402b718b3e05fa11031f04237eaa12ce4f85 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Aug 06 2013 08:34:26 +0000 Subject: 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 --- diff --git a/ipaserver/install/installutils.py b/ipaserver/install/installutils.py index 6a6841a..d17d53d 100644 --- a/ipaserver/install/installutils.py +++ b/ipaserver/install/installutils.py @@ -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: