[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 06/36] qemu-keymap: properly check return from xkb_keymap_mod_
From: |
Alex Bennée |
Subject: |
[PATCH v3 06/36] qemu-keymap: properly check return from xkb_keymap_mod_get_index |
Date: |
Tue, 27 Jun 2023 17:09:13 +0100 |
We can return XKB_MOD_INVALID for AltGr which rightly gets flagged by
sanitisers as an overly wide shift attempt. Properly check the return
type and leave the bitmap as zero in that case. Tested output before
and after is unchanged with the gb and ara keymaps.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Juan Quintela <quintela@redhat.com>
---
qemu-keymap.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/qemu-keymap.c b/qemu-keymap.c
index 229866e004..8c80f7a4ed 100644
--- a/qemu-keymap.c
+++ b/qemu-keymap.c
@@ -140,6 +140,18 @@ static void usage(FILE *out)
names.options ?: "-");
}
+static xkb_mod_mask_t get_mod(struct xkb_keymap *map, const char *name)
+{
+ xkb_mod_index_t mod;
+ xkb_mod_mask_t mask = 0;
+
+ mod = xkb_keymap_mod_get_index(map, name);
+ if (mod != XKB_MOD_INVALID) {
+ mask = (1 << mod);
+ }
+ return mask;
+}
+
int main(int argc, char *argv[])
{
struct xkb_context *ctx;
@@ -215,14 +227,10 @@ int main(int argc, char *argv[])
mod, xkb_keymap_mod_get_name(map, mod));
}
- mod = xkb_keymap_mod_get_index(map, "Shift");
- shift = (1 << mod);
- mod = xkb_keymap_mod_get_index(map, "Control");
- ctrl = (1 << mod);
- mod = xkb_keymap_mod_get_index(map, "AltGr");
- altgr = (1 << mod);
- mod = xkb_keymap_mod_get_index(map, "NumLock");
- numlock = (1 << mod);
+ shift = get_mod(map, "Shift");
+ ctrl = get_mod(map, "Control");
+ altgr = get_mod(map, "AltGr");
+ numlock = get_mod(map, "NumLock");
state = xkb_state_new(map);
xkb_keymap_key_for_each(map, walk_map, state);
--
2.39.2
- [PATCH v3 29/36] linux-user: Expose do_guest_openat() and do_guest_readlink(), (continued)
- [PATCH v3 29/36] linux-user: Expose do_guest_openat() and do_guest_readlink(), Alex Bennée, 2023/06/27
- [PATCH v3 36/36] tests/tcg: Add a test for info proc mappings, Alex Bennée, 2023/06/27
- [PATCH v3 28/36] gdbstub: clean-up vcont handling to avoid goto, Alex Bennée, 2023/06/27
- [PATCH v3 20/36] docs/devel: add some front matter to the devel index, Alex Bennée, 2023/06/27
- [PATCH v3 31/36] linux-user: Emulate /proc/self/smaps, Alex Bennée, 2023/06/27
- [PATCH v3 35/36] docs: Document security implications of debugging, Alex Bennée, 2023/06/27
- [PATCH v3 18/36] plugins: fix memory leak while parsing options, Alex Bennée, 2023/06/27
- [PATCH v3 06/36] qemu-keymap: properly check return from xkb_keymap_mod_get_index,
Alex Bennée <=
- [PATCH v3 21/36] include/migration: mark vmstate_register() as a legacy function, Alex Bennée, 2023/06/27
- [PATCH v3 25/36] docs/devel: introduce some key concepts for QOM development, Alex Bennée, 2023/06/27
- [PATCH v3 27/36] gdbstub: Permit reverse step/break to provide stop response, Alex Bennée, 2023/06/27
- [PATCH v3 26/36] gdbstub: lightly refactor connection to avoid snprintf, Alex Bennée, 2023/06/27