forked from pool/xorg-x11-server
Stefan Dirsch
c5550f7b6b
* obsolete patches: - dmx-silly.patch - fixed-SYNC-extension-trigger-BlockHandler-test.diff - sw_cursor_on_randr.patch - xorg-evdev-conf.diff - xorg-server-commit-21ed660.diff - xorg-server-revert-event-mask.patch - xorg-x11-server-gl-apps-crash.patch * adjusted patches - 0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch - 0001-Xinput-Catch-missing-configlayout-when-deleting-dev.patch - CVE-2010-2240-tree_depth_limit.patch - cache-xkbcomp-output-for-fast-start-up.patch - confine_to_shape.diff - driver-autoconfig.diff - fpic.diff - xorg-detect-psb.patch - xorg-server-1.8.0.diff - xorg-server-nohwaccess.diff - xorg-server-option_libxf86config.diff - xorg-server-xf4vnc.patch - xserver-1.6.1-nouveau.patch - xserver-bg-none-root.patch * vbe-bufferoverflow.diff - fixes vbe buffer overflow - disabled vnc build for now (standalone server + module) OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=281
43 lines
1.4 KiB
Diff
43 lines
1.4 KiB
Diff
>From 829037395f8b93e69a30852a95e378f78c3ccd6b Mon Sep 17 00:00:00 2001
|
|
From: Luc Verhaegen <libv@skynet.be>
|
|
Date: Wed, 12 Nov 2008 17:09:33 +0100
|
|
Subject: [PATCH] Xinput: Catch missing configlayout when deleting device.
|
|
|
|
In DeleteInputDeviceRequest (xf86Xinput.c), we access idev members
|
|
even if idev is null. This takes down the xserver hard in some cases
|
|
(kernel SIGABRT), and segfaults on other cases.
|
|
================================================================================
|
|
--- xorg-server-1.7.99/hw/xfree86/common/xf86Xinput.c
|
|
+++ xorg-server-1.7.99/hw/xfree86/common/xf86Xinput.c
|
|
@@ -870,17 +870,20 @@
|
|
else
|
|
xf86DeleteInput(pInfo, 0);
|
|
|
|
- /* devices added through HAL aren't in the config layout */
|
|
- it = xf86ConfigLayout.inputs;
|
|
- while(*it && *it != idev)
|
|
- it++;
|
|
-
|
|
- if (!(*it)) /* end of list, not in the layout */
|
|
+ if (idev)
|
|
{
|
|
- free(idev->driver);
|
|
- free(idev->identifier);
|
|
- xf86optionListFree(idev->commonOptions);
|
|
- free(idev);
|
|
+ /* devices added through HAL aren't in the config layout */
|
|
+ it = xf86ConfigLayout.inputs;
|
|
+ while(*it && *it != idev)
|
|
+ it++;
|
|
+
|
|
+ if (!(*it)) /* end of list, not in the layout */
|
|
+ {
|
|
+ free(idev->driver);
|
|
+ free(idev->identifier);
|
|
+ xf86optionListFree(idev->commonOptions);
|
|
+ free(idev);
|
|
+ }
|
|
}
|
|
}
|
|
OsReleaseSignals();
|