aboutsummaryrefslogtreecommitdiffstats
path: root/tools/pygrub
diff options
context:
space:
mode:
authorTim Deegan <Tim.Deegan@xensource.com>2006-11-09 14:23:24 +0000
committerTim Deegan <Tim.Deegan@xensource.com>2006-11-09 14:23:24 +0000
commit6f88f21ddc403dc8441f640f43fc691da9d7e44a (patch)
tree490ea6d7e5435b26c315ec8175bb7cea2936d00b /tools/pygrub
parent0d58f56d574711d54ed1764aedc3d7c212991c1b (diff)
downloadxen-6f88f21ddc403dc8441f640f43fc691da9d7e44a.tar.gz
xen-6f88f21ddc403dc8441f640f43fc691da9d7e44a.tar.bz2
xen-6f88f21ddc403dc8441f640f43fc691da9d7e44a.zip
[PYGRUB] Fix a few bounds violations in pygrub's command-line editor.
Don't step off the end of the line, or delete characters that aren't there. Signed-off-by: Ryan Harper <ryanh@us.ibm.com> Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
Diffstat (limited to 'tools/pygrub')
-rw-r--r--tools/pygrub/src/pygrub12
1 files changed, 8 insertions, 4 deletions
diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
index 1f63e6e2f2..64a3662704 100644
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -113,17 +113,21 @@ class GrubLineEditor(curses.textpad.Textbox):
elif ch == curses.ascii.SOH: # ^a
self.pos = 0
elif ch in (curses.ascii.STX,curses.KEY_LEFT):
- self.pos -= 1
+ if self.pos > 0:
+ self.pos -= 1
elif ch in (curses.ascii.BS,curses.KEY_BACKSPACE):
if self.pos > 0:
self.pos -= 1
- self.line.pop(self.pos)
+ if self.pos < len(self.line):
+ self.line.pop(self.pos)
elif ch == curses.ascii.EOT: # ^d
- self.line.pop(self.pos)
+ if self.pos < len(self.line):
+ self.line.pop(self.pos)
elif ch == curses.ascii.ENQ: # ^e
self.pos = len(self.line)
elif ch in (curses.ascii.ACK, curses.KEY_RIGHT):
- self.pos +=1
+ if self.pos < len(self.line):
+ self.pos +=1
elif ch == curses.ascii.VT: # ^k
self.line = self.line[:self.pos]
else: