From: Tim Deegan Date: Thu, 9 Nov 2006 14:23:24 +0000 (+0000) Subject: [PYGRUB] Fix a few bounds violations in pygrub's command-line editor. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15567^2~33 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6f88f21ddc403dc8441f640f43fc691da9d7e44a;p=xen.git [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 Signed-off-by: Tim Deegan --- 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: