summaryrefslogtreecommitdiffstats
path: root/bin/dispatch-conf
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-10-05 01:37:04 +0000
committerZac Medico <zmedico@gentoo.org>2007-10-05 01:37:04 +0000
commitf845c6114a46bc02a0415609881cb213c74c8556 (patch)
treef0b0abcf784cd34329d6f08cfa857caecaa1f9d3 /bin/dispatch-conf
parent1fbf47530609f917ee3b5973cae1c809bb830cf4 (diff)
downloadportage-f845c6114a46bc02a0415609881cb213c74c8556.tar.gz
portage-f845c6114a46bc02a0415609881cb213c74c8556.tar.bz2
portage-f845c6114a46bc02a0415609881cb213c74c8556.zip
Bug #194095 - Validate dispatch-conf input in order to
prevent spurious input characters from being interpreted as user input (which can be quite confusing and gives an "out of control" feeling). (trunk r7877) svn path=/main/branches/2.1.2/; revision=7920
Diffstat (limited to 'bin/dispatch-conf')
-rwxr-xr-xbin/dispatch-conf15
1 files changed, 13 insertions, 2 deletions
diff --git a/bin/dispatch-conf b/bin/dispatch-conf
index 5d33343f7..55bf13cfd 100755
--- a/bin/dispatch-conf
+++ b/bin/dispatch-conf
@@ -203,6 +203,8 @@ class dispatch:
# Interactively process remaining
#
+ valid_input = "qhtnmlezu"
+
for conf in confs:
count = count + 1
@@ -223,7 +225,16 @@ class dispatch:
print '>> (%i of %i) -- %s' % (count, len(confs), conf ['current'])
print '>> q quit, h help, n next, e edit-new, z zap-new, u use-new\n m merge, t toggle-merge, l look-merge: ',
- c = getch ()
+ # In some cases getch() will return some spurious characters
+ # that do not represent valid input. If we don't validate the
+ # input then the spurious characters can cause us to jump
+ # back into the above "diff" command immediatly after the user
+ # has exited it (which can be quite confusing and gives an
+ # "out of control" feeling).
+ while True:
+ c = getch()
+ if c in valid_input:
+ break
if c == 'q':
sys.exit (0)
@@ -274,7 +285,7 @@ class dispatch:
os.unlink(mrgconf)
break
else:
- continue
+ raise AssertionError("Invalid Input: %s" % c)
if auto_zapped:
print