[arch-commits] Commit in libxcb/trunk (PKGBUILD xcb_auth-fix-memory-leak.patch)

Jan de Groot jgc at archlinux.org
Wed May 4 08:36:03 UTC 2011


    Date: Wednesday, May 4, 2011 @ 04:36:03
  Author: jgc
Revision: 122471

upgpkg: libxcb 1.7-2
Fix memory leak (FS#23946)

Added:
  libxcb/trunk/xcb_auth-fix-memory-leak.patch
Modified:
  libxcb/trunk/PKGBUILD

--------------------------------+
 PKGBUILD                       |    7 +++++--
 xcb_auth-fix-memory-leak.patch |   38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 2 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-05-04 08:33:10 UTC (rev 122470)
+++ PKGBUILD	2011-05-04 08:36:03 UTC (rev 122471)
@@ -4,7 +4,7 @@
 
 pkgname=libxcb
 pkgver=1.7
-pkgrel=1
+pkgrel=2
 pkgdesc="X11 client-side library"
 arch=(i686 x86_64)
 url="http://xcb.freedesktop.org/"
@@ -14,13 +14,16 @@
 options=('!libtool')
 license=('custom')
 source=(${url}/dist/${pkgname}-${pkgver}.tar.bz2
+        xcb_auth-fix-memory-leak.patch
         libxcb-1.1-no-pthread-stubs.patch)
 sha1sums=('7540f0587907bce421914f0ddb813810cb2f36f8'
-         '3455e84642283bc91c8313af319002a20bbcbdf4')
+          '0c9246fd2ea270bfa06cb8ef93df2f8227d83c2a'
+          '3455e84642283bc91c8313af319002a20bbcbdf4')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
   patch -Np1 -i "${srcdir}/libxcb-1.1-no-pthread-stubs.patch"
+  patch -Np1 -i "${srcdir}/xcb_auth-fix-memory-leak.patch"
   libtoolize --force --copy
   aclocal
   autoconf

Added: xcb_auth-fix-memory-leak.patch
===================================================================
--- xcb_auth-fix-memory-leak.patch	                        (rev 0)
+++ xcb_auth-fix-memory-leak.patch	2011-05-04 08:36:03 UTC (rev 122471)
@@ -0,0 +1,38 @@
+From 5755582444ad0ba79e661ab3173cc38e9e588d83 Mon Sep 17 00:00:00 2001
+From: Nick Bowler <nbowler at draconx.ca>
+Date: Thu, 11 Nov 2010 01:49:41 +0000
+Subject: xcb_auth: Fix memory leak in _xcb_get_auth_info.
+
+If the initial get_peer_sock_name(getpeername ...) succeeds, the
+pointer to allocated memory is overwritten by the later call to
+get_peer_sock_name(getsockname ...).  Fix that up by freeing
+the allocated memory before overwriting the pointer.
+
+Signed-off-by: Nick Bowler <nbowler at draconx.ca>
+Signed-off-by: Julien Danjou <julien at danjou.info>
+---
+diff --git a/src/xcb_auth.c b/src/xcb_auth.c
+index 1af27fc..4839b78 100644
+--- a/src/xcb_auth.c
++++ b/src/xcb_auth.c
+@@ -327,10 +327,15 @@ int _xcb_get_auth_info(int fd, xcb_auth_info_t *info, int display)
+     if (!info->namelen)
+         goto no_auth;   /* out of memory */
+ 
+-    if (!gotsockname && (sockname = get_peer_sock_name(getsockname, fd)) == NULL)
++    if (!gotsockname)
+     {
+-        free(info->name);
+-        goto no_auth;   /* can only authenticate sockets */
++        free(sockname);
++
++        if ((sockname = get_peer_sock_name(getsockname, fd)) == NULL)
++        {
++            free(info->name);
++            goto no_auth;   /* can only authenticate sockets */
++        }
+     }
+ 
+     ret = compute_auth(info, authptr, sockname);
+--
+cgit v0.8.3-6-g21f6




More information about the arch-commits mailing list