[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#694745: unblock: xorg-server/2:1.12.4-4



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package xorg-server

Two changes:
- trivial memory leak in the glyph cache, only affects
  xserver-xorg-core-udeb (the debs use a different code path)
- fix for pointer jumps with absolute devices, seems to be particularly
  bad in virtualbox.

Description of the second change:
    dix: set the device transformation matrix
    
    The property handler is registered after setting the property, so
    dev->transform remains as all-zeros. That causes pixman_f_transform_invert()
    to fail (in transformAbsolute()) and invert remains as garbage. This
    may then cause a cursor jump to 0,0.
    
    Since the axes are not yet initialized here and we need to allow for drivers
    changing the matrix, we cannot use the property handler for matrix
    initialization, essentially duplicating the code.
    
    Triggered by the fix to (#49347) in 749a593e49adccdf1225be28a521412ec85333f4
    
    https://bugzilla.redhat.com/show_bug.cgi?id=852841

Also reported upstream at
https://bugs.freedesktop.org/show_bug.cgi?id=54353
and in Debian as #694598 and #688860.

unblock xorg-server/2:1.12.4-4

Full debdiff follows.

diff -u xorg-server-1.12.4/debian/changelog xorg-server-1.12.4/debian/changelog
--- xorg-server-1.12.4/debian/changelog
+++ xorg-server-1.12.4/debian/changelog
@@ -1,3 +1,12 @@
+xorg-server (2:1.12.4-4) unstable; urgency=low
+
+  * Fix memory leak in libnettle sha1 patch.  Thanks, Yaakov Selkowitz!
+  * Cherry-pick from upstream:
+    - dix: set the device transformation matrix.  Avoids cursor jumps in
+      virtualbox (closes: #694598)
+
+ -- Julien Cristau <jcristau@debian.org>  Thu, 29 Nov 2012 19:27:31 +0100
+
 xorg-server (2:1.12.4-3) unstable; urgency=low
 
   * Replace EXA patch from previous upload with the one actually applied
diff -u xorg-server-1.12.4/debian/patches/02_Add-libnettle-as-option-for-sha1.diff xorg-server-1.12.4/debian/patches/02_Add-libnettle-as-option-for-sha1.diff
--- xorg-server-1.12.4/debian/patches/02_Add-libnettle-as-option-for-sha1.diff
+++ xorg-server-1.12.4/debian/patches/02_Add-libnettle-as-option-for-sha1.diff
@@ -8,8 +8,10 @@
 [jcristau: forward-ported from 1.7 to 1.8]
 Signed-off-by: Julien Cristau <jcristau@debian.org>
 ---
---- a/configure.ac
-+++ b/configure.ac
+Index: xorg-server/configure.ac
+===================================================================
+--- xorg-server.orig/configure.ac
++++ xorg-server/configure.ac
 @@ -1339,7 +1339,7 @@ CORE_INCS='-I$(top_srcdir)/include -I$(t
  
  # SHA1 hashing
@@ -36,8 +38,10 @@
  AC_MSG_CHECKING([for SHA1 implementation])
  if test "x$with_sha1" = x; then
  	AC_MSG_ERROR([No suitable SHA1 implementation found])
---- a/include/dix-config.h.in
-+++ b/include/dix-config.h.in
+Index: xorg-server/include/dix-config.h.in
+===================================================================
+--- xorg-server.orig/include/dix-config.h.in
++++ xorg-server/include/dix-config.h.in
 @@ -157,6 +157,9 @@
  /* Define to use libsha1 for SHA1 */
  #undef HAVE_SHA1_IN_LIBSHA1
@@ -48,9 +52,11 @@
  /* Define to 1 if you have the `shmctl64' function. */
  #undef HAVE_SHMCTL64
  
---- a/os/xsha1.c
-+++ b/os/xsha1.c
-@@ -148,6 +148,31 @@ x_sha1_final(void *ctx, unsigned char re
+Index: xorg-server/os/xsha1.c
+===================================================================
+--- xorg-server.orig/os/xsha1.c
++++ xorg-server/os/xsha1.c
+@@ -148,6 +148,32 @@ x_sha1_final(void *ctx, unsigned char re
      return 1;
  }
  
@@ -60,7 +66,7 @@
 +
 +void *x_sha1_init(void)
 +{
-+    struct sha1_ctx *ctx = xalloc(sizeof(*ctx));
++    struct sha1_ctx *ctx = malloc(sizeof(*ctx));
 +    if (!ctx)
 +        return NULL;
 +    sha1_init(ctx);
@@ -76,6 +82,7 @@
 +int x_sha1_final(void *ctx, unsigned char result[20])
 +{
 +    sha1_digest(ctx, 20, result);
++    free(ctx);
 +    return 1;
 +}
 +
only in patch2:
unchanged:
--- xorg-server-1.12.4.orig/dix/devices.c
+++ xorg-server-1.12.4/dix/devices.c
@@ -303,6 +303,9 @@
     /* unity matrix */
     memset(transform, 0, sizeof(transform));
     transform[0] = transform[4] = transform[8] = 1.0f;
+    dev->transform.m[0][0] = 1.0;
+    dev->transform.m[1][1] = 1.0;
+    dev->transform.m[2][2] = 1.0;
 
     XIChangeDeviceProperty(dev, XIGetKnownProperty(XI_PROP_TRANSFORM),
                            XIGetKnownProperty(XATOM_FLOAT), 32,

Cheers,
Julien

Attachment: signature.asc
Description: Digital signature


Reply to: