summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2011-03-24 10:57:08 -0400
committerStephen Gallagher <sgallagh@redhat.com>2011-03-24 14:14:02 -0400
commit6718eb8bc04df52cd475c7659831d9f549b9cf2e (patch)
tree374ab7ec0b09e62d4f43bcd8494d88a946da3fe8
parent7c4d48633bc3bee025a996df888f998317651ec1 (diff)
downloadsssd-6718eb8bc04df52cd475c7659831d9f549b9cf2e.tar.gz
sssd-6718eb8bc04df52cd475c7659831d9f549b9cf2e.tar.xz
sssd-6718eb8bc04df52cd475c7659831d9f549b9cf2e.zip
sss_obfuscate: abort on ctrl+c
There is a python bug (http://bugs.python.org/issue11236) where getpass.getpass() does not throw KeyboardInterrupt on ctrl+c. This workaround is the closest we can get: if we detect the control character in the string that we read, we'll cancel.
-rw-r--r--src/tools/sss_obfuscate12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/tools/sss_obfuscate b/src/tools/sss_obfuscate
index 5a5742b9c..fbea1213d 100644
--- a/src/tools/sss_obfuscate
+++ b/src/tools/sss_obfuscate
@@ -44,13 +44,25 @@ def main():
try:
pprompt = lambda: (getpass.getpass("Enter password: "), getpass.getpass("Re-enter password: "))
p1, p2 = pprompt()
+
+ #Work around bug in Python 2.6
+ if '\x03' in p1 or '\x03' in p2:
+ raise KeyboardInterrupt
+
while p1 != p2:
print('Passwords do not match. Try again')
p1, p2 = pprompt()
+
+ #Work around bug in Python 2.6
+ if '\x03' in p1 or '\x03' in p2:
+ raise KeyboardInterrupt
password = p1
+
except EOFError:
print >> sys.stderr, '\nUnexpected end-of-file. Password change aborted'
return 1
+ except KeyboardInterrupt:
+ return 1
else:
try: