xserver: Branch 'server-1.6-branch' - 10 commits

Keith Packard keithp at kemper.freedesktop.org
Fri May 8 22:58:02 PDT 2009


 Xi/xiproperty.c                       |    9 +--------
 doc/Xserver.man.pre                   |    7 -------
 hw/xfree86/common/xf86Config.c        |   13 +++++++++++--
 hw/xfree86/dixmods/extmod/xf86vmode.c |   16 ++++++----------
 hw/xfree86/doc/man/Xorg.man.pre       |    3 ---
 hw/xfree86/loader/loadmod.c           |    3 ++-
 hw/xfree86/modes/xf86RandR12.c        |    6 ++++--
 os/log.c                              |   22 ++++++----------------
 xkb/xkb.c                             |    2 ++
 9 files changed, 32 insertions(+), 49 deletions(-)

New commits:
commit 0fbf6f30f771e60714fb3003a9bb1a6b79e50c6e
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Thu Mar 26 22:22:32 2009 -0700

    Don't leak default font path when appending built-ins
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at sun.com>
    (cherry picked from commit 66539cc05d0b017b9feb4a038499907810140623)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

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;
commit 773e4890b385a229b0919b4a249714d0bb7171a2
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Thu Mar 26 22:25:08 2009 -0700

    Don't leak canonical module name and patterns if module is built-in
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at sun.com>
    Acked-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 1c101d75d4855b2698e3fc8d2dd662f20585812f)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

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) {
commit 21f58a2b0d0d96492d2d7c7de1bd654ed0114279
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed May 6 16:55:32 2009 +1000

    Xi: don't double-swap the XListDeviceProperties reply.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 50cc8adafca4ba3838d468278d6eb8a4692d2488)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

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;
commit b575af88d0e547a03b164f6f3b2d4b268b9ffc34
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed May 6 22:25:28 2009 +1000

    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 <peter.hutterer at who-t.net>
    (cherry picked from commit 8b583ca2b21155359c6255f406c96599b277c762)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

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;
commit 9c643b1e3ddc4ec9f1a924bd25f24df8536c7ea6
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Thu Apr 16 16:17:07 2009 +1000

    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 <peter.hutterer at who-t.net>
    Acked-by: Alan Coopersmith <alan.coopersmith at sun.com>
    (cherry picked from commit 0e0642ee9466d3268476d0084a83a9d93a4aa555)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

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);
     }
 }
 
commit 7cd596e0dd6b9c195d7e395c26bfb00ef544c525
Author: Dave Airlie <airlied at linux.ie>
Date:   Wed Apr 15 18:26:06 2009 +1000

    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 <keithp at keithp.com>

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
      */
commit bc95f29441b3daa7b9d91bd3c2b3e502a3a8cc81
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Thu Apr 23 08:42:38 2009 -0700

    Fix byte swapping of XF86VidMode{Get,Set}GammaRamp
    
    Fixes OpenSolaris Bug 8315:
    Xorg segfaults when screensaver fades in cross-endian xdmcp session
    <http://defect.opensolaris.org/bz/show_bug.cgi?id=8315>
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at sun.com>
    (cherry picked from commit 7d0f7518c2235a9dc783029971259ddaada2db20)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

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);
 }
 
commit 3f0c73694b9ddc85b82a7a82a5d98fa8b18a01a8
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Thu Feb 12 16:03:16 2009 +0000

    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 <jon.turney at dronecode.org.uk>
    (cherry picked from commit d0dd649035fc3698c5b436f9d9d248116aa106a3)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

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
commit 78eb366c65a953bbc059a989a92dfe28fbe1ae29
Author: Jon TURNEY <jon.turney at dronecode.org.uk>
Date:   Thu Feb 12 16:02:17 2009 +0000

    Remove long-gone '-co' option from Xserver man page
    
    The '-co' option was removed in commit dda10c9066a660b647384179f82e1da8e063264f
    
    Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
    (cherry picked from commit b0ad9e1ced9619f37acf77764c395c57b86cf463)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

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
commit 31536307703fcffa14a027ec777310c9962f816c
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Sat May 2 00:26:18 2009 -0700

    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 <alan.coopersmith at sun.com>
    Acked-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 557dbadf3be273255e8fdb12d9321f4e88bf2b65)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

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);


More information about the xorg-commit mailing list