1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-02-23 18:45:56 +01:00

WPrefs: fix NULL pointer handling when getting the Modifiers (Coverity #50200)

As pointed by Coverity, the allocated value returned by XGetModifierMapping
is assumed to be non-NULL everywhere except when releasing it.
Removed this last check (useless) and added a little check at the beginning
to avoid an (improbable) crash.

Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
This commit is contained in:
Christophe CURIS
2014-05-31 19:58:48 +02:00
committed by Carlos R. Mafra
parent 8eb6c82231
commit 266d9a2945

View File

@@ -119,7 +119,7 @@ static void x_reset_modifier_mapping(Display * display)
int super_bit = 0; int super_bit = 0;
int alt_bit = 0; int alt_bit = 0;
int mode_bit = 0; int mode_bit = 0;
XModifierKeymap *x_modifier_keymap = XGetModifierMapping(display); XModifierKeymap *x_modifier_keymap;
#define modwarn(name,old,other) \ #define modwarn(name,old,other) \
wwarning ("%s (0x%x) generates %s, which is generated by %s.", \ wwarning ("%s (0x%x) generates %s, which is generated by %s.", \
@@ -155,6 +155,12 @@ static void x_reset_modifier_mapping(Display * display)
else \ else \
old = modifier_index; old = modifier_index;
x_modifier_keymap = XGetModifierMapping(display);
if (x_modifier_keymap == NULL) {
wwarning("XGetModifierMapping returned NULL, there is no modifiers or no memory.\n");
return;
}
mkpm = x_modifier_keymap->max_keypermod; mkpm = x_modifier_keymap->max_keypermod;
for (modifier_index = 0; modifier_index < 8; modifier_index++) for (modifier_index = 0; modifier_index < 8; modifier_index++)
for (modifier_key = 0; modifier_key < mkpm; modifier_key++) { for (modifier_key = 0; modifier_key < mkpm; modifier_key++) {
@@ -270,8 +276,7 @@ static void x_reset_modifier_mapping(Display * display)
AltIndex = alt_bit; AltIndex = alt_bit;
ModeIndex = mode_bit; ModeIndex = mode_bit;
if (x_modifier_keymap != NULL) XFreeModifiermap(x_modifier_keymap);
XFreeModifiermap(x_modifier_keymap);
} }
int ModifierFromKey(Display * dpy, const char *key) int ModifierFromKey(Display * dpy, const char *key)