From 81e90602393ae295d4dbbeeaf96eba797388334a Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 29 Dec 2017 16:01:30 +0100 Subject: [PATCH] Make sure KeySequence keys are valid --- qutebrowser/keyinput/keyutils.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py index 31c9507b3..c67ac7024 100644 --- a/qutebrowser/keyinput/keyutils.py +++ b/qutebrowser/keyinput/keyutils.py @@ -243,6 +243,8 @@ class KeySequence: def __init__(self, *args): self._sequence = QKeySequence(*args) + for key in self._sequence: + assert key != Qt.Key_unknown # FIXME handle more than 4 keys def __str__(self): @@ -275,6 +277,9 @@ class KeySequence: def __hash__(self): return hash(self._sequence) + def __len__(self): + return len(self._sequence) + def matches(self, other): # pylint: disable=protected-access return self._sequence.matches(other._sequence) @@ -306,4 +311,6 @@ class KeySequence: def parse(cls, keystr): """Parse a keystring like or xyz and return a KeySequence.""" s = ', '.join(_parse_keystring(keystr)) - return cls(s) + new = cls(s) + assert len(new) > 0 + return new