From 31536307703fcffa14a027ec777310c9962f816c Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Sat, 02 May 2009 07:26:18 +0000 Subject: XkbSetNamedIndicator should ignore SD's without LED's When ProcXkbSetNamedIndicator is called on a core device, and we walk the slaves to set the LED's on each of them, ignore any slaves that do not have either a KbdFeedbackCtrl or LedCtrl structure. (This is much more critical in xserver-1.5-branch, where we walk *all* devices, not just the slaves of the specified master, and thus return failure when setting an LED on the Core Keyboard and hit a xf86-input-mouse device with no LED's to set.) Signed-off-by: Alan Coopersmith Acked-by: Peter Hutterer (cherry picked from commit 557dbadf3be273255e8fdb12d9321f4e88bf2b65) Signed-off-by: Keith Packard --- diff --git a/xkb/xkb.c b/xkb/xkb.c index 7c1edea..15a0f43 100644 --- a/xkb/xkb.c +++ b/xkb/xkb.c @@ -3438,6 +3438,7 @@ ProcXkbSetNamedIndicator(ClientPtr client) for (other = inputInfo.devices; other; other = other->next) { if ((other != dev) && !other->isMaster && (other->u.master == dev) && + (other->kbdfeed || other->leds) && (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success)) { rc = _XkbCreateIndicatorMap(other, stuff->indicator, @@ -3461,6 +3462,7 @@ ProcXkbSetNamedIndicator(ClientPtr client) for (other = inputInfo.devices; other; other = other->next) { if ((other != dev) && !other->isMaster && (other->u.master == dev) && + (other->kbdfeed || other->leds) && (XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success)) { _XkbSetNamedIndicator(client, other, stuff); -- cgit v0.8.2 From 78eb366c65a953bbc059a989a92dfe28fbe1ae29 Mon Sep 17 00:00:00 2001 From: Jon TURNEY Date: Thu, 12 Feb 2009 16:02:17 +0000 Subject: Remove long-gone '-co' option from Xserver man page The '-co' option was removed in commit dda10c9066a660b647384179f82e1da8e063264f Signed-off-by: Jon TURNEY (cherry picked from commit b0ad9e1ced9619f37acf77764c395c57b86cf463) Signed-off-by: Keith Packard --- diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre index 8897e1a..eace57d 100644 --- a/doc/Xserver.man.pre +++ b/doc/Xserver.man.pre @@ -117,10 +117,6 @@ sets key-click volume (allowable range: 0-100). sets the visual class for the root window of color screens. The class numbers are as specified in the X protocol. Not obeyed by all servers. -.TP 8 -.B \-co \fIfilename\fP -sets name of RGB color database. The default is -.IR __projectroot__/share/X11/rgb . .ig .TP 8 .B \-config \fIfilename\fP -- cgit v0.8.2 From 3f0c73694b9ddc85b82a7a82a5d98fa8b18a01a8 Mon Sep 17 00:00:00 2001 From: Jon TURNEY Date: Thu, 12 Feb 2009 16:03:16 +0000 Subject: Remove references to rgb.txt from files section of Xserver and Xorg man pages The references to this file in the server code were removed in commit dda10c9066a660b647384179f82e1da8e063264f Signed-off-by: Jon TURNEY (cherry picked from commit d0dd649035fc3698c5b436f9d9d248116aa106a3) Signed-off-by: Keith Packard --- diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre index eace57d..cd5bdbd 100644 --- a/doc/Xserver.man.pre +++ b/doc/Xserver.man.pre @@ -560,9 +560,6 @@ Bitmap font directories .IR __projectroot__/lib/X11/fonts/TTF , __projectroot__/lib/X11/fonts/Type1 Outline font directories .TP 30 -.I __projectroot__/share/X11/rgb.txt -Color database -.TP 30 .I /tmp/.X11-unix/X\fBn\fP Unix domain socket for display number \fBn\fP .TP 30 diff --git a/hw/xfree86/doc/man/Xorg.man.pre b/hw/xfree86/doc/man/Xorg.man.pre index bf29fcb..4992dc7 100644 --- a/hw/xfree86/doc/man/Xorg.man.pre +++ b/hw/xfree86/doc/man/Xorg.man.pre @@ -542,9 +542,6 @@ Libraries. .B __projectroot__/lib/X11/fonts/\(** Fonts. .TP 30 -.B __projectroot__/share/X11/rgb.txt -Color names to RGB mapping. -.TP 30 .B __projectroot__/share/X11/XErrorDB Client error message database. .TP 30 -- cgit v0.8.2 From bc95f29441b3daa7b9d91bd3c2b3e502a3a8cc81 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Thu, 23 Apr 2009 15:42:38 +0000 Subject: Fix byte swapping of XF86VidMode{Get,Set}GammaRamp Fixes OpenSolaris Bug 8315: Xorg segfaults when screensaver fades in cross-endian xdmcp session Signed-off-by: Alan Coopersmith (cherry picked from commit 7d0f7518c2235a9dc783029971259ddaada2db20) Signed-off-by: Keith Packard --- diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c index 6485a04..aecaf94 100644 --- a/hw/xfree86/dixmods/extmod/xf86vmode.c +++ b/hw/xfree86/dixmods/extmod/xf86vmode.c @@ -1543,6 +1543,7 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client) { CARD16 *ramp = NULL; int n, length, i; + size_t ramplen; xXF86VidModeGetGammaRampReply rep; REQUEST(xXF86VidModeGetGammaRampReq); @@ -1557,7 +1558,8 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client) length = (stuff->size + 1) & ~1; if(stuff->size) { - if(!(ramp = xalloc(length * 3 * sizeof(CARD16)))) + ramplen = length * 3 * sizeof(CARD16); + if (!(ramp = xalloc(ramplen))) return BadAlloc; if (!VidModeGetGammaRamp(stuff->screen, stuff->size, @@ -1575,13 +1577,12 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client) swaps(&rep.sequenceNumber, n); swapl(&rep.length, n); swaps(&rep.size, n); - for(i = 0; i < length * 3; i++) - swaps(&ramp[i],n); + SwapShorts(ramp, length * 3); } WriteToClient(client, sizeof(xXF86VidModeGetGammaRampReply), (char *)&rep); if(stuff->size) { - WriteToClient(client, rep.length << 2, (char*)ramp); + WriteToClient(client, ramplen, (char*)ramp); xfree(ramp); } @@ -2062,7 +2063,6 @@ SProcXF86VidModeGetGamma(ClientPtr client) static int SProcXF86VidModeSetGammaRamp(ClientPtr client) { - CARD16 *ramp; int length, n; REQUEST(xXF86VidModeSetGammaRampReq); swaps(&stuff->length, n); @@ -2071,11 +2071,7 @@ SProcXF86VidModeSetGammaRamp(ClientPtr client) swaps(&stuff->screen, n); length = ((stuff->size + 1) & ~1) * 6; REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length); - ramp = (CARD16*)&stuff[1]; - while(length--) { - swaps(ramp, n); - ramp++; - } + SwapRestS(stuff); return ProcXF86VidModeSetGammaRamp(client); } -- cgit v0.8.2 From 7cd596e0dd6b9c195d7e395c26bfb00ef544c525 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 15 Apr 2009 08:26:06 +0000 Subject: randr12: looking up these bits if randr isn't initialised is bad. When xinerama is enabled we don't get randr protocol, but the driver might still want randr internals (cherry picked from commit faf7dfa099f5b42a703313fbd1bf8afdad07a179) Signed-off-by: Keith Packard --- diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c index 6f93a0d..4546492 100644 --- a/hw/xfree86/modes/xf86RandR12.c +++ b/hw/xfree86/modes/xf86RandR12.c @@ -752,8 +752,8 @@ _X_EXPORT Bool xf86RandR12CreateScreenResources (ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); - XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen); + xf86CrtcConfigPtr config; + XF86RandRInfoPtr randrp; int c; int width, height; int mmWidth, mmHeight; @@ -763,6 +763,8 @@ xf86RandR12CreateScreenResources (ScreenPtr pScreen) return TRUE; #endif + config = XF86_CRTC_CONFIG_PTR(pScrn); + randrp = XF86RANDRINFO(pScreen); /* * Compute size of screen */ -- cgit v0.8.2 From 9c643b1e3ddc4ec9f1a924bd25f24df8536c7ea6 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 16 Apr 2009 06:17:07 +0000 Subject: os: don't malloc memory in LogVMessageVerb. LogVWrite is limited to a buffer size of 1024, so we don't loose anything here by truncating. This way we can use LogVMessageVerb (and xf86Msg and friends) during signal handlers with the normal message types. Signed-off-by: Peter Hutterer Acked-by: Alan Coopersmith (cherry picked from commit 0e0642ee9466d3268476d0084a83a9d93a4aa555) Signed-off-by: Keith Packard --- diff --git a/os/log.c b/os/log.c index 39bbd60..692e78a 100644 --- a/os/log.c +++ b/os/log.c @@ -312,7 +312,7 @@ _X_EXPORT void LogVMessageVerb(MessageType type, int verb, const char *format, va_list args) { const char *s = X_UNKNOWN_STRING; - char *tmpBuf = NULL; + char tmpBuf[1024]; /* Ignore verbosity for X_ERROR */ if (logVerbosity >= verb || logFileVerbosity >= verb || type == X_ERROR) { @@ -354,21 +354,11 @@ LogVMessageVerb(MessageType type, int verb, const char *format, va_list args) break; } - /* - * Prefix the format string with the message type. We do it this way - * so that LogVWrite() is only called once per message. - */ - if (s) { - tmpBuf = malloc(strlen(format) + strlen(s) + 1 + 1); - /* Silently return if malloc fails here. */ - if (!tmpBuf) - return; - sprintf(tmpBuf, "%s ", s); - strcat(tmpBuf, format); - LogVWrite(verb, tmpBuf, args); - free(tmpBuf); - } else - LogVWrite(verb, format, args); + /* if s is not NULL we need a space before format */ + snprintf(tmpBuf, sizeof(tmpBuf), "%s%s%s", s ? s : "", + s ? " " : "", + format); + LogVWrite(verb, tmpBuf, args); } } -- cgit v0.8.2 From b575af88d0e547a03b164f6f3b2d4b268b9ffc34 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 06 May 2009 12:25:28 +0000 Subject: Xi: fix copy/paste error causing sizeof against wrong struct. This wrong check may cause BadLength to be returned to the client even if the length is correct. Signed-off-by: Peter Hutterer (cherry picked from commit 8b583ca2b21155359c6255f406c96599b277c762) Signed-off-by: Keith Packard --- diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c index 26af3fc..04b2c81 100644 --- a/Xi/xiproperty.c +++ b/Xi/xiproperty.c @@ -650,7 +650,7 @@ ProcXChangeDeviceProperty (ClientPtr client) return BadValue; } len = stuff->nUnits; - if (len > ((0xffffffff - sizeof(xChangePropertyReq)) >> 2)) + if (len > ((0xffffffff - sizeof(xChangeDevicePropertyReq)) >> 2)) return BadLength; sizeInBytes = format>>3; totalSize = len * sizeInBytes; -- cgit v0.8.2 From 21f58a2b0d0d96492d2d7c7de1bd654ed0114279 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 06 May 2009 06:55:32 +0000 Subject: Xi: don't double-swap the XListDeviceProperties reply. Signed-off-by: Peter Hutterer (cherry picked from commit 50cc8adafca4ba3838d468278d6eb8a4692d2488) Signed-off-by: Keith Packard --- diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c index 04b2c81..b04ee94 100644 --- a/Xi/xiproperty.c +++ b/Xi/xiproperty.c @@ -602,13 +602,6 @@ ProcXListDeviceProperties (ClientPtr client) rep.length = (numProps * sizeof(Atom)) >> 2; rep.sequenceNumber = client->sequence; rep.nAtoms = numProps; - if (client->swapped) - { - int n; - swaps (&rep.sequenceNumber, n); - swapl (&rep.length, n); - swaps (&rep.nAtoms, n); - } temppAtoms = pAtoms; for (prop = dev->properties.properties; prop; prop = prop->next) *temppAtoms++ = prop->propertyName; -- cgit v0.8.2 From 773e4890b385a229b0919b4a249714d0bb7171a2 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 27 Mar 2009 05:25:08 +0000 Subject: Don't leak canonical module name and patterns if module is built-in Signed-off-by: Alan Coopersmith Acked-by: Peter Hutterer (cherry picked from commit 1c101d75d4855b2698e3fc8d2dd662f20585812f) Signed-off-by: Keith Packard --- diff --git a/hw/xfree86/loader/loadmod.c b/hw/xfree86/loader/loadmod.c index e98f013..22b540c 100644 --- a/hw/xfree86/loader/loadmod.c +++ b/hw/xfree86/loader/loadmod.c @@ -867,7 +867,8 @@ doLoadModule(const char *module, const char *path, const char **subdirlist, if (!strcmp (m, *cim)) { xf86MsgVerb(X_INFO, 3, "Module \"%s\" already built-in\n", m); - return (ModuleDescPtr) 1; + ret = (ModuleDescPtr) 1; + goto LoadModule_exit; } if (!name) { -- cgit v0.8.2 From 0fbf6f30f771e60714fb3003a9bb1a6b79e50c6e Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 27 Mar 2009 05:22:32 +0000 Subject: Don't leak default font path when appending built-ins Signed-off-by: Alan Coopersmith (cherry picked from commit 66539cc05d0b017b9feb4a038499907810140623) Signed-off-by: Keith Packard --- diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index 17223a1..9e56ca9 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -601,7 +601,9 @@ configFiles(XF86ConfFilesPtr fileconf) defaultFontPath = Xprintf("%s%s%s", fileconf->file_fontpath, *temp_path ? "," : "", temp_path); - must_copy = FALSE; + if (defaultFontPath != NULL) { + must_copy = FALSE; + } } else defaultFontPath = fileconf->file_fontpath; @@ -617,7 +619,14 @@ configFiles(XF86ConfFilesPtr fileconf) !((start == temp_path || start[-1] == ',') && (!*end || *end == ','))) { defaultFontPath = Xprintf("%s%sbuilt-ins", temp_path, *temp_path ? "," : ""); - must_copy = FALSE; + if (must_copy == TRUE) { + if (defaultFontPath != NULL) { + must_copy = FALSE; + } + } else { + /* already made a copy of the font path */ + xfree(temp_path); + } } /* xf86ValidateFontPath modifies its argument, but returns a copy of it. */ temp_path = must_copy ? XNFstrdup(defaultFontPath) : defaultFontPath; -- cgit v0.8.2 From a9f85dcefbadfe44d8c58ad08430aaadb8c59d34 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Mon, 11 May 2009 19:27:46 +0000 Subject: xselinux: Relax ownership restriction on SetSelectionUseContext. Instead, clients should keep track of the selection instances they use. (cherry picked from commit 0952d12717031e9dda9e48123bb922d0f4e81834) Signed-off-by: Eamon Walsh --- diff --git a/Xext/xselinux.c b/Xext/xselinux.c index 2a32bb8..6c99c29 100644 --- a/Xext/xselinux.c +++ b/Xext/xselinux.c @@ -1349,15 +1349,6 @@ ProcSELinuxSetCreateContext(ClientPtr client, unsigned offset) goto out; privPtr = &serverClient->devPrivates; } - else if (offset == USE_SEL) { - /* Selection use context currently requires no selections owned */ - Selection *pSel; - for (pSel = CurrentSelections; pSel; pSel = pSel->next) - if (pSel->client == client) { - rc = BadMatch; - goto out; - } - } ptr = dixLookupPrivate(privPtr, subjectKey); pSid = (security_id_t *)(ptr + offset); -- cgit v0.8.2 From 5cd5a01259ba349f1868ca4af04207cf120d69e4 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Tue, 19 May 2009 23:30:33 +0000 Subject: xace: Fix a bad device access hook call. Add a proper access mode, and reverse the logic of the return value. Zero ("Success") is returned on success from the hook calls. Signed-off-by: Eamon Walsh (cherry picked from commit 3cea176d5abcb0f14eefbdcbe17fed0847524dd4) --- diff --git a/dix/events.c b/dix/events.c index 63b0674..ee6ac9e 100644 --- a/dix/events.c +++ b/dix/events.c @@ -4220,10 +4220,10 @@ CoreFocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin) { xKeymapEvent ke; ClientPtr client = clients[CLIENT_ID(pWin->drawable.id)]; - if (XaceHook(XACE_DEVICE_ACCESS, client, dev, FALSE)) - memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31); - else + if (XaceHook(XACE_DEVICE_ACCESS, client, dev, DixReadAccess)) bzero((char *)&ke.map[0], 31); + else + memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31); ke.type = KeymapNotify; (void)DeliverEventsToWindow(dev, pWin, (xEvent *)&ke, 1, -- cgit v0.8.2