xkb: fix NULL pointer dereference in XkbDDXLoadKeymapByNames()

In the rare case that NULL kbd is passed and also no components provided,
the corresponding error message code crashes on NULL pointer dereference.

| ../xkb/ddxLoad.c: In function ‘XkbDDXLoadKeymapByNames’:
| ../xkb/ddxLoad.c:393:25: warning: dereference of NULL ‘keybd’ [CWE-476] [-Wanalyzer-null-dereference]
|   393 |                    keybd->name ? keybd->name : "(unnamed keyboard)");
|       |                    ~~~~~^~~~~~

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2025-05-06 16:42:42 +02:00
parent a1d1ee930d
commit 427400fcc0

View File

@ -389,7 +389,7 @@ XkbDDXLoadKeymapByNames(DeviceIntPtr keybd,
(names->compat == NULL) && (names->symbols == NULL) &&
(names->geometry == NULL)) {
LogMessage(X_ERROR, "XKB: No components provided for device %s\n",
keybd->name ? keybd->name : "(unnamed keyboard)");
keybd && keybd->name ? keybd->name : "(unnamed keyboard)");
return 0;
}
else if (!XkbDDXCompileKeymapByNames(xkb, names, want, need,