gui: improvements of feature keyboard layout checks
This commit is contained in:
parent
5cb0e61a84
commit
f130ec0bf3
@ -126,16 +126,18 @@ class GUI(qubes.ext.Extension):
|
|||||||
def on_feature_pre_set(self, subject, event, feature, value, oldvalue=None):
|
def on_feature_pre_set(self, subject, event, feature, value, oldvalue=None):
|
||||||
untrusted_xkb_layout = value.split('+')
|
untrusted_xkb_layout = value.split('+')
|
||||||
if not len(untrusted_xkb_layout) == 3:
|
if not len(untrusted_xkb_layout) == 3:
|
||||||
raise qubes.exc.QubesValueError
|
raise qubes.exc.QubesValueError("Invalid number of parameters")
|
||||||
|
|
||||||
untrusted_layout = untrusted_xkb_layout[0]
|
untrusted_layout = untrusted_xkb_layout[0]
|
||||||
untrusted_variant = untrusted_xkb_layout[1]
|
untrusted_variant = untrusted_xkb_layout[1]
|
||||||
untrusted_options = untrusted_xkb_layout[2]
|
untrusted_options = untrusted_xkb_layout[2]
|
||||||
|
|
||||||
re_variant = '^[a-zA-Z0-9-_]+$'
|
re_variant = r'^[a-zA-Z0-9-_]*$'
|
||||||
re_options = '^[a-zA-Z0-9-_:,]+$'
|
re_options = r'^[a-zA-Z0-9-_:,]*$'
|
||||||
|
|
||||||
if not untrusted_layout.isalpha() or \
|
if not untrusted_layout.isalpha():
|
||||||
not bool(re.match(re_variant, untrusted_variant)) or \
|
raise qubes.exc.QubesValueError("Invalid layout provided")
|
||||||
not bool(re.match(re_options, untrusted_options)):
|
if not bool(re.match(re_variant, untrusted_variant)):
|
||||||
raise qubes.exc.QubesValueError
|
raise qubes.exc.QubesValueError("Invalid variant provided")
|
||||||
|
if not bool(re.match(re_options, untrusted_options)):
|
||||||
|
raise qubes.exc.QubesValueError("Invalid options provided")
|
||||||
|
Loading…
Reference in New Issue
Block a user