Fix segfault when -extension XKEYBOARD is passed on the command line
Users should be told they can't disable XKB or XInput via error messages,
not core dumps.
Reported by T`2 on #xorg irc
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 2bd71a6db2
)
This commit is contained in:
parent
a8bfbd81b8
commit
650ac84a0c
|
@ -359,8 +359,14 @@ Bool EnableDisableExtension(char *name, Bool enable)
|
|||
|
||||
for (ext = &ExtensionToggleList[0]; ext->name != NULL; ext++) {
|
||||
if (strcmp(name, ext->name) == 0) {
|
||||
*ext->disablePtr = !enable;
|
||||
return TRUE;
|
||||
if (ext->disablePtr != NULL) {
|
||||
*ext->disablePtr = !enable;
|
||||
return TRUE;
|
||||
} else {
|
||||
/* Extension is always on, impossible to disable */
|
||||
return enable; /* okay if they wanted to enable,
|
||||
fail if they tried to disable */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -370,12 +376,24 @@ Bool EnableDisableExtension(char *name, Bool enable)
|
|||
void EnableDisableExtensionError(char *name, Bool enable)
|
||||
{
|
||||
ExtensionToggle *ext = &ExtensionToggleList[0];
|
||||
Bool found = FALSE;
|
||||
|
||||
ErrorF("[mi] Extension \"%s\" is not recognized\n", name);
|
||||
for (ext = &ExtensionToggleList[0]; ext->name != NULL; ext++) {
|
||||
if ((strcmp(name, ext->name) == 0) && (ext->disablePtr == NULL)) {
|
||||
ErrorF("[mi] Extension \"%s\" can not be disabled\n", name);
|
||||
found = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found == FALSE)
|
||||
ErrorF("[mi] Extension \"%s\" is not recognized\n", name);
|
||||
ErrorF("[mi] Only the following extensions can be run-time %s:\n",
|
||||
enable ? "enabled" : "disabled");
|
||||
for (ext = &ExtensionToggleList[0]; ext->name != NULL; ext++)
|
||||
ErrorF("[mi] %s\n", ext->name);
|
||||
for (ext = &ExtensionToggleList[0]; ext->name != NULL; ext++) {
|
||||
if (ext->disablePtr != NULL) {
|
||||
ErrorF("[mi] %s\n", ext->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef XFree86LOADER
|
||||
|
|
Loading…
Reference in New Issue
Block a user