Xext/bigreq.c | 7 Xext/dpms.c | 60 - Xext/geext.c | 16 Xext/panoramiX.c | 74 +- Xext/panoramiXSwap.c | 26 Xext/panoramiXsrv.h | 2 Xext/saver.c | 68 - Xext/security.c | 37 - Xext/shape.c | 110 +-- Xext/shm.c | 114 +-- Xext/sync.c | 186 +---- Xext/xcmisc.c | 41 - Xext/xf86bigfont.c | 62 - Xext/xres.c | 64 - Xext/xselinux_ext.c | 67 - Xext/xtest.c | 30 Xext/xvdisp.c | 407 +++++------ Xi/allowev.c | 6 Xi/chgdctl.c | 15 Xi/chgfctl.c | 52 - Xi/chgkbd.c | 4 Xi/chgkmap.c | 3 Xi/chgprop.c | 8 Xi/chgptr.c | 4 Xi/closedev.c | 4 Xi/devbell.c | 4 Xi/exevents.c | 96 ++ Xi/extinit.c | 238 +++--- Xi/getbmap.c | 10 Xi/getdctl.c | 33 Xi/getfctl.c | 64 - Xi/getfocus.c | 14 Xi/getkmap.c | 10 Xi/getmmap.c | 10 Xi/getprop.c | 14 Xi/getselev.c | 16 Xi/getvers.c | 16 Xi/grabdev.c | 16 Xi/grabdevb.c | 10 Xi/grabdevk.c | 10 Xi/gtmotion.c | 20 Xi/listdev.c | 28 Xi/opendev.c | 10 Xi/queryst.c | 13 Xi/selectev.c | 8 Xi/sendexev.c | 7 Xi/setbmap.c | 10 Xi/setdval.c | 10 Xi/setfocus.c | 8 Xi/setmmap.c | 10 Xi/setmode.c | 10 Xi/ungrdev.c | 6 Xi/ungrdevb.c | 8 Xi/ungrdevk.c | 8 Xi/xiallowev.c | 8 Xi/xichangecursor.c | 10 Xi/xichangehierarchy.c | 11 Xi/xigetclientpointer.c | 12 Xi/xigrabdev.c | 28 Xi/xipassivegrab.c | 60 - Xi/xiproperty.c | 107 +-- Xi/xiquerydevice.c | 142 ++-- Xi/xiquerydevice.h | 1 Xi/xiquerypointer.c | 30 Xi/xiqueryversion.c | 17 Xi/xiselectev.c | 30 Xi/xisetclientpointer.c | 8 Xi/xisetdevfocus.c | 23 Xi/xiwarppointer.c | 24 composite/compalloc.c | 11 composite/compext.c | 74 -- config/Makefile.am | 6 config/config-backends.h | 7 config/config.c | 20 config/dbus.c | 60 - config/hal.c | 44 - config/udev.c | 63 + config/wscons.c | 268 +++++++ configure.ac | 167 ++-- damageext/damageext.c | 44 - dbe/dbe.c | 68 - devbook.am | 45 - dix/.gitignore | 1 dix/colormap.c | 7 dix/cursor.c | 2 dix/devices.c | 61 + dix/dispatch.c | 33 dix/dixfonts.c | 30 dix/enterleave.c | 10 dix/eventconvert.c | 70 +- dix/events.c | 313 +++++---- dix/getevents.c | 831 +++++++++++++++--------- dix/grabs.c | 2 dix/inpututils.c | 320 +++++++++ dix/ptrveloc.c | 263 +++---- dix/swaprep.c | 401 ++++------- dix/swapreq.c | 728 +++++++++------------ doc/Xinput.xml | 26 doc/Xserver-spec.xml | 33 doc/dtrace/Xserver-DTrace.xml | 22 docbook.am | 114 +-- fb/fbpict.c | 4 fb/wfbrename.h | 2 glx/glxserver.h | 6 hw/dmx/config/xdmxconfig.c | 23 hw/dmx/dmx.c | 241 +++--- hw/dmx/dmxclient.h | 1 hw/dmx/dmxcursor.h | 4 hw/dmx/dmxextension.c | 2 hw/dmx/dmxinit.c | 11 hw/dmx/dmxprop.c | 9 hw/dmx/doc/dmx.xml | 11 hw/dmx/examples/dmxwininfo.c | 3 hw/dmx/glxProxy/glxcmds.c | 41 + hw/dmx/glxProxy/glxscreens.c | 39 - hw/dmx/glxProxy/glxserver.h | 6 hw/dmx/glxProxy/render2swap.c | 2 hw/dmx/input/dmxinputinit.c | 6 hw/dmx/input/lnx-keyboard.c | 6 hw/dmx/input/usb-common.c | 4 hw/kdrive/ephyr/ephyrdriext.c | 24 hw/kdrive/ephyr/ephyrhostproxy.c | 2 hw/kdrive/ephyr/hostx.c | 11 hw/kdrive/ephyr/man/Xephyr.man | 32 hw/kdrive/src/kinfo.c | 12 hw/kdrive/src/kinput.c | 139 ++-- hw/vfb/InitOutput.c | 5 hw/xfree86/Makefile.am | 2 hw/xfree86/common/Makefile.am | 11 hw/xfree86/common/xf86.h | 19 hw/xfree86/common/xf86AutoConfig.c | 4 hw/xfree86/common/xf86Bus.c | 19 hw/xfree86/common/xf86Bus.h | 1 hw/xfree86/common/xf86Config.c | 222 ++---- hw/xfree86/common/xf86Configure.c | 6 hw/xfree86/common/xf86Cursor.c | 2 hw/xfree86/common/xf86DGA.c | 2 hw/xfree86/common/xf86DPMS.c | 3 hw/xfree86/common/xf86Events.c | 9 hw/xfree86/common/xf86Globals.c | 9 hw/xfree86/common/xf86Helper.c | 157 ---- hw/xfree86/common/xf86Init.c | 76 +- hw/xfree86/common/xf86Module.h | 6 hw/xfree86/common/xf86Opt.h | 67 - hw/xfree86/common/xf86Option.c | 114 +-- hw/xfree86/common/xf86Optionstr.h | 44 + hw/xfree86/common/xf86PciInfo.h | 2 hw/xfree86/common/xf86Privstr.h | 8 hw/xfree86/common/xf86RandR.c | 3 hw/xfree86/common/xf86VGAarbiter.c | 15 hw/xfree86/common/xf86VidMode.c | 3 hw/xfree86/common/xf86Xinput.c | 99 +- hw/xfree86/common/xf86Xinput.h | 7 hw/xfree86/common/xf86fbBus.c | 2 hw/xfree86/common/xf86pciBus.c | 30 hw/xfree86/common/xf86str.h | 8 hw/xfree86/dixmods/Makefile.am | 12 hw/xfree86/dixmods/extmod/Makefile.am | 2 hw/xfree86/dixmods/extmod/xf86vmode.c | 444 ++++++------ hw/xfree86/doc/ddxDesign.xml | 35 - hw/xfree86/dri/xf86dri.c | 24 hw/xfree86/dri2/dri2.c | 58 + hw/xfree86/dri2/dri2.h | 31 hw/xfree86/dri2/dri2ext.c | 19 hw/xfree86/exa/Makefile.am | 2 hw/xfree86/fbdevhw/Makefile.am | 2 hw/xfree86/fbdevhw/fbdevhw.c | 1 hw/xfree86/fbdevhw/fbdevhw.h | 2 hw/xfree86/i2c/fi1236.c | 1002 +++++++++++++++-------------- hw/xfree86/int10/generic.c | 86 -- hw/xfree86/int10/helper_exec.c | 86 +- hw/xfree86/int10/helper_mem.c | 3 hw/xfree86/int10/xf86int10.c | 61 - hw/xfree86/int10/xf86int10.h | 2 hw/xfree86/loader/loadmod.c | 41 - hw/xfree86/man/Xorg.man | 7 hw/xfree86/man/xorg.conf.man | 73 -- hw/xfree86/modes/xf86Crtc.c | 72 +- hw/xfree86/modes/xf86Crtc.h | 26 hw/xfree86/modes/xf86Cursors.c | 93 +- hw/xfree86/modes/xf86EdidModes.c | 5 hw/xfree86/modes/xf86Modes.c | 55 + hw/xfree86/modes/xf86RandR12.c | 2 hw/xfree86/modes/xf86Rotate.c | 135 ++- hw/xfree86/os-support/Makefile.am | 5 hw/xfree86/os-support/bsd/alpha_video.c | 71 -- hw/xfree86/os-support/bsd/arm_video.c | 13 hw/xfree86/os-support/bsd/bsd_bell.c | 4 hw/xfree86/os-support/bsd/bsd_init.c | 69 - hw/xfree86/os-support/bsd/i386_video.c | 9 hw/xfree86/os-support/bsd/ppc_video.c | 13 hw/xfree86/os-support/bsd/sparc64_video.c | 6 hw/xfree86/os-support/bus/Makefile.am | 9 hw/xfree86/os-support/bus/Pci.c | 8 hw/xfree86/os-support/bus/Pci.h | 17 hw/xfree86/os-support/bus/bsd_pci.c | 16 hw/xfree86/os-support/bus/linuxPci.c | 450 ------------- hw/xfree86/os-support/bus/nobus.c | 1 hw/xfree86/os-support/bus/xf86Pci.h | 10 hw/xfree86/os-support/linux/Makefile.am | 4 hw/xfree86/os-support/linux/int10/linux.c | 3 hw/xfree86/os-support/linux/lnx_init.c | 39 - hw/xfree86/os-support/linux/lnx_video.c | 12 hw/xfree86/os-support/shared/bios_devmem.c | 75 -- hw/xfree86/os-support/shared/bios_mmap.c | 4 hw/xfree86/os-support/shared/ia64Pci.c | 188 ----- hw/xfree86/os-support/shared/posix_tty.c | 4 hw/xfree86/os-support/shared/vidmem.c | 6 hw/xfree86/os-support/solaris/sun_init.c | 42 - hw/xfree86/os-support/stub/Makefile.am | 19 hw/xfree86/os-support/stub/stub_bell.c | 10 hw/xfree86/os-support/stub/stub_bios.c | 12 hw/xfree86/os-support/stub/stub_init.c | 26 hw/xfree86/os-support/stub/stub_video.c | 13 hw/xfree86/os-support/xf86_OSlib.h | 65 - hw/xfree86/os-support/xf86_OSproc.h | 15 hw/xfree86/parser/Flags.c | 5 hw/xfree86/parser/Layout.c | 2 hw/xfree86/parser/Makefile.am | 2 hw/xfree86/parser/scan.c | 17 hw/xfree86/parser/xf86Optrec.h | 25 hw/xfree86/parser/xf86tokens.h | 2 hw/xfree86/ramdac/xf86Cursor.c | 6 hw/xfree86/ramdac/xf86HWCurs.c | 4 hw/xfree86/sdksyms.sh | 11 hw/xfree86/shadowfb/Makefile.am | 2 hw/xfree86/utils/cvt/cvt.c | 7 hw/xfree86/utils/man/cvt.man | 3 hw/xfree86/utils/man/gtf.man | 3 hw/xfree86/vbe/Makefile.am | 2 hw/xfree86/vbe/vbe.c | 5 hw/xfree86/vgahw/vgaHW.c | 184 +++-- hw/xfree86/vgahw/vgaHW.h | 24 hw/xfree86/x86emu/sys.c | 2 hw/xfree86/xaa/Makefile.am | 2 hw/xnest/Display.c | 15 hw/xnest/GC.c | 3 hw/xnest/Keyboard.c | 25 hw/xnest/XNCursor.h | 4 hw/xnest/XNGC.h | 1 hw/xquartz/X11Application.m | 2 hw/xquartz/applewm.c | 12 hw/xquartz/darwin.c | 2 hw/xquartz/pbproxy/Makefile.am | 1 hw/xquartz/pseudoramiX.c | 65 - hw/xquartz/xpr/appledri.c | 149 +++- hw/xquartz/xpr/appledristr.h | 298 ++++---- hw/xwin/InitOutput.c | 66 - hw/xwin/XWin.exe.manifest | 5 hw/xwin/ddraw.h | 2 hw/xwin/man/XWinrc.man | 10 hw/xwin/win.h | 3 hw/xwin/winclipboardwndproc.c | 48 - hw/xwin/winglobals.c | 7 hw/xwin/winmonitors.c | 28 hw/xwin/winmultiwindowwndproc.c | 4 hw/xwin/winprocarg.c | 32 hw/xwin/winwin32rootlesswndproc.c | 4 hw/xwin/winwindowswm.c | 10 hw/xwin/winwndproc.c | 4 include/Makefile.am | 1 include/colormapst.h | 17 include/cursor.h | 4 include/dix-config.h.in | 15 include/dix.h | 4 include/dixstruct.h | 9 include/eventstr.h | 12 include/exevents.h | 28 include/globals.h | 2 include/input.h | 37 - include/inputstr.h | 33 include/inpututils.h | 9 include/list.h | 172 ++++ include/misc.h | 102 ++ include/optionstr.h | 14 include/os.h | 17 include/protocol-versions.h | 2 include/ptrveloc.h | 32 include/scrnintstr.h | 4 include/xorg-config.h.in | 18 include/xserver-properties.h | 5 man/Xserver.man | 20 mi/mi.h | 2 mi/miarc.c | 2 mi/mieq.c | 207 ++++- mi/mifpoly.h | 6 mi/mipointer.c | 71 +- mi/mipointer.h | 8 mi/misprite.c | 5 mi/mivaltree.c | 2 mi/miwideline.c | 2 miext/rootless/rootlessScreen.c | 4 os/.gitignore | 1 os/backtrace.c | 5 os/connection.c | 6 os/io.c | 7 os/log.c | 175 +++-- os/utils.c | 14 os/xprintf.c | 5 randr/rrcrtc.c | 129 +-- randr/rrdispatch.c | 9 randr/rrmode.c | 7 randr/rroutput.c | 33 randr/rrproperty.c | 67 + randr/rrscreen.c | 106 +-- randr/rrsdispatch.c | 262 +++---- randr/rrxinerama.c | 88 +- record/record.c | 151 ++-- render/mipict.c | 67 + render/mipict.h | 20 render/picture.c | 44 - render/picturestr.h | 21 render/render.c | 446 +++++------- test/Makefile.am | 3 test/input.c | 460 +++++++++++++ test/list.c | 164 ++++ test/misc.c | 104 +++ test/xfree86.c | 107 +++ test/xi2/protocol-common.c | 64 + test/xi2/protocol-eventconvert.c | 169 ++-- test/xi2/protocol-xigetclientpointer.c | 12 test/xi2/protocol-xigetselectedevents.c | 17 test/xi2/protocol-xipassivegrabdevice.c | 29 test/xi2/protocol-xiquerydevice.c | 98 +- test/xi2/protocol-xiquerypointer.c | 24 test/xi2/protocol-xiqueryversion.c | 16 test/xi2/protocol-xiselectevents.c | 11 test/xi2/protocol-xisetclientpointer.c | 7 test/xi2/protocol-xiwarppointer.c | 19 xfixes/cursor.c | 122 +-- xfixes/region.c | 156 +--- xfixes/saveset.c | 5 xfixes/select.c | 9 xfixes/xfixes.c | 16 xkb/ddxList.c | 13 xkb/ddxLoad.c | 3 xkb/xkb.c | 413 +++++------ xkb/xkbAccessX.c | 9 xkb/xkbActions.c | 9 xkb/xkbEvents.c | 105 +-- xkb/xkbSwap.c | 338 ++++----- xorg-server.pc.in | 1 342 files changed, 9580 insertions(+), 8614 deletions(-)
New commits: commit 5952efa903d57ac69070f1477ce46223a2a7893c Author: Keith Packard <kei...@keithp.com> Date: Sun Nov 20 13:07:33 2011 -0800 Bump version to 1.11.99.1 (1.12 development release 1) Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/configure.ac b/configure.ac index 63d59f9..e804030 100644 --- a/configure.ac +++ b/configure.ac @@ -26,8 +26,8 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.57) -AC_INIT([xorg-server], 1.11.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2011-08-26" +AC_INIT([xorg-server], 1.11.99.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2011-11-20" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE commit 795fbe3e6e440f023e52c452106f4c266c13d36c Author: Keith Packard <kei...@keithp.com> Date: Sun Nov 20 13:33:12 2011 -0800 Add 'optionstr.h' to include/Makefile.am This makes sure it gets distributed Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/include/Makefile.am b/include/Makefile.am index 6f63c76..972f403 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -32,6 +32,7 @@ sdk_HEADERS = \ misc.h \ miscstruct.h \ opaque.h \ + optionstr.h \ os.h \ pixmap.h \ pixmapstr.h \ commit 328074890eeb111950e984c6f618311983600b20 Author: dtakahashi42 <dtakahash...@gmail.com> Date: Fri Nov 18 11:30:22 2011 -0800 rootless: Fix a server crash when choosing a color with the gimp color wheel https://trac.macports.org/ticket/30927 Signed-off-by: Jeremy Huddleston <jerem...@apple.com> Reviewed-by: Jeremy Huddleston <jerem...@apple.com> diff --git a/miext/rootless/rootlessScreen.c b/miext/rootless/rootlessScreen.c index 0801e72..c855706 100644 --- a/miext/rootless/rootlessScreen.c +++ b/miext/rootless/rootlessScreen.c @@ -247,8 +247,8 @@ RootlessComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, WindowPtr srcWin, dstWin, maskWin = NULL; if (pMask) { // pMask can be NULL - maskWin = (pMask->pDrawable->type == DRAWABLE_WINDOW) ? - (WindowPtr)pMask->pDrawable : NULL; + maskWin = (pMask->pDrawable && pMask->pDrawable->type == DRAWABLE_WINDOW) ? + (WindowPtr)pMask->pDrawable : NULL; } srcWin = (pSrc->pDrawable && pSrc->pDrawable->type == DRAWABLE_WINDOW) ? (WindowPtr)pSrc->pDrawable : NULL; commit 58864146fbdf1820d04825838691e84784ef91bc Author: Ross Burton <r...@linux.intel.com> Date: Wed Sep 28 11:46:02 2011 +0100 edid: Add quirk for Acer Aspire One 110 At least one revision of the AAO reports a 190x110mm maximum size but a 451x113mm mode. X.Org Bug 41141 <https://bugs.freedesktop.org/show_bug.cgi?id=41141> Signed-off-by: Ross Burton <r...@linux.intel.com> Reviewed-by: Daniel Stone <dan...@fooishbar.org> Reviewed-by: Jeremy Huddleston <jerem...@apple.com> diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c index 9ff2f0d..86065f8 100644 --- a/hw/xfree86/modes/xf86EdidModes.c +++ b/hw/xfree86/modes/xf86EdidModes.c @@ -165,6 +165,11 @@ static Bool quirk_detailed_use_maximum_size (int scrnIndex, xf86MonPtr DDC) DDC->vendor.prod_id == 6400) return TRUE; + /* Bug #41141: Acer Aspire One */ + if (memcmp (DDC->vendor.name, "LGD", 4) == 0 && + DDC->vendor.prod_id == 0x7f01) + return TRUE; + return FALSE; } commit 34b0e4eee911f8b09a3682a7f1b4c8598ef48b8d Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Thu Aug 25 16:04:04 2011 +0100 dri2: Register the DRI2DrawableType after server regeneration The Resource database is reset upon regeneration and so the dri2 module needs to re-register its RESTYPE for the drawable or else it will clobber the next unsuspecting user of the database. Fortunately, DRI2 is loaded late in the initialisation sequence and was last up until xf86-video-intel started using the Resource database to track outstanding swaps... Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> Reviewed-by: Jeremy Huddleston <jerem...@apple.com> Tested-by: Paulo Zanoni <paulo.r.zan...@intel.com> diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index dd56f9c..0d613be 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -1235,14 +1235,24 @@ DRI2CloseScreen(ScreenPtr pScreen) } extern ExtensionModule dri2ExtensionModule; +extern Bool DRI2ModuleSetup(void); + +/* Called by InitExtensions() */ +Bool +DRI2ModuleSetup(void) +{ + dri2DrawableRes = CreateNewResourceType(DRI2DrawableGone, "DRI2Drawable"); + if (!dri2DrawableRes) + return FALSE; + + return TRUE; +} static pointer DRI2Setup(pointer module, pointer opts, int *errmaj, int *errmin) { static Bool setupDone = FALSE; - dri2DrawableRes = CreateNewResourceType(DRI2DrawableGone, "DRI2Drawable"); - if (!setupDone) { setupDone = TRUE; diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c index 934abf6..e612cf0 100644 --- a/hw/xfree86/dri2/dri2ext.c +++ b/hw/xfree86/dri2/dri2ext.c @@ -50,6 +50,7 @@ #include "xf86Module.h" static ExtensionEntry *dri2Extension; +extern Bool DRI2ModuleSetup(void); static Bool validDrawable(ClientPtr client, XID drawable, Mask access_mode, @@ -634,6 +635,8 @@ DRI2ExtensionInit(void) StandardMinorOpcode); DRI2EventBase = dri2Extension->eventBase; + + DRI2ModuleSetup(); } extern Bool noDRI2Extension; commit bfa1a0dd190ed88020d60eba3bb04681c8e83a68 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Mon Jan 24 11:17:03 2011 +0000 DRI2: Avoid a NULL pointer dereference Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41211 Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> Reviewed-by: Jeremy Huddleston <jerem...@apple.com> diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index a97508d..dd56f9c 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -816,7 +816,8 @@ DRI2WaitSwap(ClientPtr client, DrawablePtr pDrawable) /* If we're currently waiting for a swap on this drawable, reset * the request and suspend the client. We only support one * blocked client per drawable. */ - if ((pPriv->swapsPending) && + if (pPriv && + pPriv->swapsPending && pPriv->blockedClient == NULL) { ResetCurrentRequest(client); client->sequence--; commit eeb21a133b982f71de739baf62e53c8a68f5d495 Author: Chris Wilson <ch...@chris-wilson.co.uk> Date: Mon Jan 24 11:17:03 2011 +0000 VidMode: prevent crash with no modes Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=17431 Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> Reviewed-by: Jeremy Huddleston <jerem...@apple.com> diff --git a/hw/xfree86/common/xf86VidMode.c b/hw/xfree86/common/xf86VidMode.c index 4dd454d..2ae5484 100644 --- a/hw/xfree86/common/xf86VidMode.c +++ b/hw/xfree86/common/xf86VidMode.c @@ -221,6 +221,9 @@ VidModeGetFirstModeline(int scrnIndex, pointer *mode, int *dotClock) return FALSE; pScrn = xf86Screens[scrnIndex]; + if (pScrn->modes == NULL) + return FALSE; + pVidMode = VMPTR(pScrn->pScreen); pVidMode->First = pScrn->modes; pVidMode->Next = pVidMode->First->next; commit c1bb8f43b9290c2b18a9f0ac59773ff8f1eb974f Author: Rami Ylimäki <rami.ylim...@vincit.fi> Date: Tue Oct 4 12:25:26 2011 +0300 record: Prevent out of bounds access when recording a reply. Any pad bytes in replies are written to the client from a zeroed array. However, record extension tries to incorrectly access the pad bytes from the end of reply data. Signed-off-by: Rami Ylimäki <rami.ylim...@vincit.fi> Reviewed-by: Erkki Seppälä <erkki.sepp...@vincit.fi> diff --git a/include/os.h b/include/os.h index b489211..823fe5d 100644 --- a/include/os.h +++ b/include/os.h @@ -451,9 +451,10 @@ extern _X_EXPORT CallbackListPtr ReplyCallback; typedef struct { ClientPtr client; const void *replyData; - unsigned long dataLenBytes; + unsigned long dataLenBytes; /* actual bytes from replyData + pad bytes */ unsigned long bytesRemaining; Bool startOfReply; + unsigned long padBytes; /* pad bytes from zeroed array */ } ReplyInfoRec; /* stuff for FlushCallback */ diff --git a/os/io.c b/os/io.c index 068f5f0..955bf8b 100644 --- a/os/io.c +++ b/os/io.c @@ -809,6 +809,7 @@ WriteToClient (ClientPtr who, int count, const void *__buf) replyinfo.client = who; replyinfo.replyData = buf; replyinfo.dataLenBytes = count + padBytes; + replyinfo.padBytes = padBytes; if (who->replyBytesRemaining) { /* still sending data of an earlier reply */ who->replyBytesRemaining -= count + padBytes; diff --git a/record/record.c b/record/record.c index 68311ac..db77b64 100644 --- a/record/record.c +++ b/record/record.c @@ -269,8 +269,9 @@ RecordFlushReplyBuffer( * device events and EndOfData, pClient is NULL. * category is the category of the protocol element, as defined * by the RECORD spec. - * data is a pointer to the protocol data, and datalen is its length - * in bytes. + * data is a pointer to the protocol data, and datalen - padlen + * is its length in bytes. + * padlen is the number of pad bytes from a zeroed array. * futurelen is the number of bytes that will be sent in subsequent * calls to this function to complete this protocol element. * In those subsequent calls, futurelen will be -1 to indicate @@ -290,7 +291,7 @@ RecordFlushReplyBuffer( */ static void RecordAProtocolElement(RecordContextPtr pContext, ClientPtr pClient, - int category, pointer data, int datalen, int futurelen) + int category, pointer data, int datalen, int padlen, int futurelen) { CARD32 elemHeaderData[2]; int numElemHeaders = 0; @@ -398,15 +399,20 @@ RecordAProtocolElement(RecordContextPtr pContext, ClientPtr pClient, } if (datalen) { + static char padBuffer[3]; /* as in FlushClient */ memcpy(pContext->replyBuffer + pContext->numBufBytes, - data, datalen); - pContext->numBufBytes += datalen; + data, datalen - padlen); + pContext->numBufBytes += datalen - padlen; + memcpy(pContext->replyBuffer + pContext->numBufBytes, + padBuffer, padlen); + pContext->numBufBytes += padlen; } } else + { RecordFlushReplyBuffer(pContext, (pointer)elemHeaderData, - numElemHeaders, (pointer)data, datalen); - + numElemHeaders, (pointer)data, datalen - padlen); + } } /* RecordAProtocolElement */ @@ -483,19 +489,19 @@ RecordABigRequest(RecordContextPtr pContext, ClientPtr client, xReq *stuff) /* record the request header */ bytesLeft = client->req_len << 2; RecordAProtocolElement(pContext, client, XRecordFromClient, - (pointer)stuff, SIZEOF(xReq), bytesLeft); + (pointer)stuff, SIZEOF(xReq), 0, bytesLeft); /* reinsert the extended length field that was squished out */ bigLength = client->req_len + bytes_to_int32(sizeof(bigLength)); if (client->swapped) swapl(&bigLength); RecordAProtocolElement(pContext, client, XRecordFromClient, - (pointer)&bigLength, sizeof(bigLength), /* continuation */ -1); + (pointer)&bigLength, sizeof(bigLength), 0, /* continuation */ -1); bytesLeft -= sizeof(bigLength); /* record the rest of the request after the length */ RecordAProtocolElement(pContext, client, XRecordFromClient, - (pointer)(stuff + 1), bytesLeft, /* continuation */ -1); + (pointer)(stuff + 1), bytesLeft, 0, /* continuation */ -1); } /* RecordABigRequest */ @@ -542,7 +548,7 @@ RecordARequest(ClientPtr client) RecordABigRequest(pContext, client, stuff); else RecordAProtocolElement(pContext, client, XRecordFromClient, - (pointer)stuff, client->req_len << 2, 0); + (pointer)stuff, client->req_len << 2, 0, 0); } else /* extension, check minor opcode */ { @@ -566,7 +572,7 @@ RecordARequest(ClientPtr client) else RecordAProtocolElement(pContext, client, XRecordFromClient, (pointer)stuff, - client->req_len << 2, 0); + client->req_len << 2, 0, 0); break; } } /* end for each minor op info */ @@ -619,7 +625,8 @@ RecordAReply(CallbackListPtr *pcbl, pointer nulldata, pointer calldata) if (pContext->continuedReply) { RecordAProtocolElement(pContext, client, XRecordFromServer, - (pointer)pri->replyData, pri->dataLenBytes, /* continuation */ -1); + (pointer)pri->replyData, pri->dataLenBytes, + pri->padBytes, /* continuation */ -1); if (!pri->bytesRemaining) pContext->continuedReply = 0; } @@ -629,7 +636,7 @@ RecordAReply(CallbackListPtr *pcbl, pointer nulldata, pointer calldata) if (majorop <= 127) { /* core reply */ RecordAProtocolElement(pContext, client, XRecordFromServer, - (pointer)pri->replyData, pri->dataLenBytes, pri->bytesRemaining); + (pointer)pri->replyData, pri->dataLenBytes, 0, pri->bytesRemaining); if (pri->bytesRemaining) pContext->continuedReply = 1; } @@ -651,7 +658,7 @@ RecordAReply(CallbackListPtr *pcbl, pointer nulldata, pointer calldata) { RecordAProtocolElement(pContext, client, XRecordFromServer, (pointer)pri->replyData, - pri->dataLenBytes, pri->bytesRemaining); + pri->dataLenBytes, 0, pri->bytesRemaining); if (pri->bytesRemaining) pContext->continuedReply = 1; break; @@ -723,7 +730,7 @@ RecordADeliveredEventOrError(CallbackListPtr *pcbl, pointer nulldata, pointer ca } RecordAProtocolElement(pContext, pClient, - XRecordFromServer, pEvToRecord, SIZEOF(xEvent), 0); + XRecordFromServer, pEvToRecord, SIZEOF(xEvent), 0, 0); } } /* end for each event */ } /* end this client is on this context */ @@ -774,7 +781,7 @@ RecordSendProtocolEvents(RecordClientsAndProtocolPtr pRCAP, } RecordAProtocolElement(pContext, NULL, - XRecordFromServer, pEvToRecord, SIZEOF(xEvent), 0); + XRecordFromServer, pEvToRecord, SIZEOF(xEvent), 0, 0); /* make sure device events get flushed in the absence * of other client activity */ @@ -2415,7 +2422,7 @@ ProcRecordEnableContext(ClientPtr client) assert(numEnabledContexts > 0); /* send StartOfData */ - RecordAProtocolElement(pContext, NULL, XRecordStartOfData, NULL, 0, 0); + RecordAProtocolElement(pContext, NULL, XRecordStartOfData, NULL, 0, 0, 0); RecordFlushReplyBuffer(pContext, NULL, 0, NULL, 0); return Success; } /* ProcRecordEnableContext */ @@ -2446,7 +2453,7 @@ RecordDisableContext(RecordContextPtr pContext) if (!pContext->pRecordingClient) return; if (!pContext->pRecordingClient->clientGone) { - RecordAProtocolElement(pContext, NULL, XRecordEndOfData, NULL, 0, 0); + RecordAProtocolElement(pContext, NULL, XRecordEndOfData, NULL, 0, 0, 0); RecordFlushReplyBuffer(pContext, NULL, 0, NULL, 0); /* Re-enable request processing on this connection. */ AttendClient(pContext->pRecordingClient); @@ -2761,7 +2768,7 @@ RecordConnectionSetupInfo(RecordContextPtr pContext, NewClientInfoRec *pci) SwapConnSetupPrefix(pci->prefix, (xConnSetupPrefix*)pConnSetup); SwapConnSetupInfo((char*)pci->setup, (char*)(pConnSetup + prefixsize)); RecordAProtocolElement(pContext, pci->client, XRecordClientStarted, - (pointer)pConnSetup, prefixsize + restsize, 0); + (pointer)pConnSetup, prefixsize + restsize, 0, 0); free(pConnSetup); } else @@ -2770,9 +2777,9 @@ RecordConnectionSetupInfo(RecordContextPtr pContext, NewClientInfoRec *pci) * data in two pieces */ RecordAProtocolElement(pContext, pci->client, XRecordClientStarted, - (pointer)pci->prefix, prefixsize, restsize); + (pointer)pci->prefix, prefixsize, 0, restsize); RecordAProtocolElement(pContext, pci->client, XRecordClientStarted, - (pointer)pci->setup, restsize, /* continuation */ -1); + (pointer)pci->setup, restsize, 0, /* continuation */ -1); } } /* RecordConnectionSetupInfo */ @@ -2849,7 +2856,7 @@ RecordAClientStateChange(CallbackListPtr *pcbl, pointer nulldata, pointer callda { if (pContext->pRecordingClient && pRCAP->clientDied) RecordAProtocolElement(pContext, pClient, - XRecordClientDied, NULL, 0, 0); + XRecordClientDied, NULL, 0, 0, 0); RecordDeleteClientFromRCAP(pRCAP, pos); } } commit 1f5baa924a5907978f564372265d9830ac72a077 Author: Jeremy Huddleston <jerem...@apple.com> Date: Sun Oct 30 20:26:42 2011 -0700 xfree86: Deprecate the use of xf86PciInfo.h Signed-off-by: Jeremy Huddleston <jerem...@apple.com> Reviewed-by: Tormod Volden <debian.tor...@gmail.com> diff --git a/hw/xfree86/common/xf86PciInfo.h b/hw/xfree86/common/xf86PciInfo.h index 356c7db..e2d7862 100644 --- a/hw/xfree86/common/xf86PciInfo.h +++ b/hw/xfree86/common/xf86PciInfo.h @@ -47,6 +47,8 @@ #ifndef _XF86_PCIINFO_H #define _XF86_PCIINFO_H +#warning "xf86PciInfo.h is deprecated. For greater compatibility, drivers should include necessary PCI IDs locally rather than relying on this file from xorg-server." + /* PCI Pseudo Vendor */ #define PCI_VENDOR_GENERIC 0x00FF diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c index bc09bd2..87dc025 100644 --- a/hw/xfree86/common/xf86pciBus.c +++ b/hw/xfree86/common/xf86pciBus.c @@ -49,6 +49,7 @@ #define XF86_OS_PRIVS #include "xf86_OSproc.h" +#define PCI_VENDOR_GENERIC 0x00FF /* Bus-specific globals */ Bool pciSlotClaimed = FALSE; diff --git a/hw/xfree86/doc/ddxDesign.xml b/hw/xfree86/doc/ddxDesign.xml index 0d5e952..c406cd7 100644 --- a/hw/xfree86/doc/ddxDesign.xml +++ b/hw/xfree86/doc/ddxDesign.xml @@ -3553,13 +3553,6 @@ The following include files are typically required by video drivers: </para> <para> - Drivers that need to access PCI vendor/device definitions need this: - <literallayout><filename> - "xf86PciInfo.h" - </filename></literallayout> - </para> - - <para> Drivers that need to access the PCI config space need this: <literallayout><filename> "xf86Pci.h" diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c index dee731b..30a2a91 100644 --- a/hw/xfree86/fbdevhw/fbdevhw.c +++ b/hw/xfree86/fbdevhw/fbdevhw.c @@ -9,7 +9,6 @@ #include "xf86_OSproc.h" /* pci stuff */ -#include "xf86PciInfo.h" #include "xf86Pci.h" #include "xf86cmap.h" diff --git a/hw/xfree86/os-support/bus/Pci.h b/hw/xfree86/os-support/bus/Pci.h index 88560ec..5709bd8 100644 --- a/hw/xfree86/os-support/bus/Pci.h +++ b/hw/xfree86/os-support/bus/Pci.h @@ -108,7 +108,6 @@ #define _PCI_H 1 #include "xf86Pci.h" -#include "xf86PciInfo.h" /* * Global Definitions diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh index b8e7023..4a4e1f6 100755 --- a/hw/xfree86/sdksyms.sh +++ b/hw/xfree86/sdksyms.sh @@ -121,7 +121,6 @@ cat > sdksyms.c << EOF #include "xf86Module.h" #include "xf86Opt.h" #ifdef XSERVER_LIBPCIACCESS - #include "xf86PciInfo.h" #include "xf86VGAarbiter.h" #endif #include "xf86Priv.h" commit eb3377ffb8a7baa26c9831e56ed782d48b28fa71 Author: Jeremy Huddleston <jerem...@apple.com> Date: Tue Nov 1 14:59:15 2011 -0700 xfree86: Fix powerpc build with -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast memType is a uint64_t on powerpc. Using memType only really makes sense for *physical* addresses, which can be 64-bit for 32-bit systems running on 64-bit hardware. However, unmapVidMem() only deals with *virtual* addresses, which are guaranteed to fit into an uintptr_t. Signed-off-by: Jeremy Huddleston <jerem...@apple.com> Reviewed-by: Mark Kettenis <kette...@openbsd.org> diff --git a/hw/xfree86/os-support/linux/lnx_video.c b/hw/xfree86/os-support/linux/lnx_video.c index e711784..0d91f7a 100644 --- a/hw/xfree86/os-support/linux/lnx_video.c +++ b/hw/xfree86/os-support/linux/lnx_video.c @@ -465,11 +465,11 @@ mapVidMem(int ScreenNum, unsigned long Base, unsigned long Size, int flags) static void unmapVidMem(int ScreenNum, pointer Base, unsigned long Size) { - memType alignOff = (memType)Base - - ((memType)Base & ~(getpagesize() - 1)); + uintptr_t alignOff = (uintptr_t)Base + - ((uintptr_t)Base & ~(getpagesize() - 1)); - DebugF("alignment offset: %lx\n",alignOff); - munmap((caddr_t)((memType)Base - alignOff), (Size + alignOff)); + DebugF("alignment offset: %lx\n", (unsigned long)alignOff); + munmap((void *)((uintptr_t)Base - alignOff), (Size + alignOff)); } commit a551f126cc4af7a476d9c8fd0cb309d5aa600d54 Author: Pierre-Loup A. Griffais <pgriff...@nvidia.com> Date: Fri Nov 4 23:26:25 2011 -0700 xfree86: Fix RandR rotation across server generations 245cb8e94fd1599 fixed xf86RotateDestroy() to actually run its teardown code, causing the Damage object to properly be re-allocated after a server regeneration. However the block that does that still thinks the Rotate layer BlockHandler is wrapped from the last generation, meaning the shadow pixmap is never re-allocated and the Damage object is never re-registered, causing a blank screen, and potentially a driver crash on the next teardown after the server asks it to free a 0x0 Pixmap. Signed-off-by: Pierre-Loup A. Griffais <pgriff...@nvidia.com> Reviewed-by: Aaron Plattner <aplatt...@nvidia.com> Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index aac33d3..9532151 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -807,6 +807,9 @@ xf86CrtcScreenInit (ScreenPtr screen) config->CloseScreen = screen->CloseScreen; screen->CloseScreen = xf86CrtcCloseScreen; + + /* This might still be marked wrapped from a previous generation */ + config->BlockHandler = NULL; #ifdef XFreeXDGA _xf86_di_dga_init_internal(screen); commit e7cb8f802adf6fc22e7a930c0dfc5c1076781c96 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Nov 9 15:31:57 2011 +1000 Xext: remove unused variable 'n' xselinux_ext.c: In function 'SELinuxSendItemsToClient': xselinux_ext.c:340:16: warning: unused variable 'n' [-Wunused-variable] Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Julien Cristau <jcris...@debian.org> diff --git a/Xext/xselinux_ext.c b/Xext/xselinux_ext.c index 641368a..a18a367 100644 --- a/Xext/xselinux_ext.c +++ b/Xext/xselinux_ext.c @@ -337,7 +337,7 @@ static int SELinuxSendItemsToClient(ClientPtr client, SELinuxListItemRec *items, int size, int count) { - int rc, k, n, pos = 0; + int rc, k, pos = 0; SELinuxListItemsReply rep; CARD32 *buf; commit bb4aa1f263ad38c175bfda3b7e6c325260ce3f28 Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Wed Nov 9 15:31:10 2011 +1000 Xext: don't swap CARD8 in SProcSELinuxQueryVersion xselinux_ext.c: In function 'SELinuxSendItemsToClient': xselinux_ext.c:340:16: warning: unused variable 'n' [-Wunused-variable] xselinux_ext.c: In function 'SProcSELinuxQueryVersion': xselinux_ext.c:532:62: error: call to 'wrong_size' declared with attribute error: wrong sized variable passed to swap xselinux_ext.c:533:62: error: call to 'wrong_size' declared with attribute error: wrong sized variable passed to swap Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1rbfkd-000434...@vasks.debian.org