summaryrefslogtreecommitdiff
path: root/extra/libxcb/xcb_auth-fix-memory-leak.patch
diff options
context:
space:
mode:
authorNicolas Reynolds <fauno@kiwwwi.com.ar>2011-05-05 16:07:43 -0300
committerNicolas Reynolds <fauno@kiwwwi.com.ar>2011-05-05 16:07:43 -0300
commit3a0008bd8a3e6f4f21181c1fadc17c3da3108907 (patch)
tree175c9e1755980b2a955b1b9e6b93c1a3d431276f /extra/libxcb/xcb_auth-fix-memory-leak.patch
parent933e5d274b2a4e386565d2f3bb982682e168438b (diff)
parent2bba02fdaa36de05dffef6a54b57c73259d7db53 (diff)
Merge branch 'master' of ssh://vparabola/home/parabola/abslibre-pre-mips64el
Conflicts: community/alienarena/PKGBUILD community/mumble/PKGBUILD community/mysql-workbench/PKGBUILD community/paintown/PKGBUILD community/ufoai/PKGBUILD core/dcron/PKGBUILD core/udev/PKGBUILD extra/qt/PKGBUILD extra/texlive-bin/PKGBUILD testing/opencv/PKGBUILD testing/pciutils/PKGBUILD testing/usbutils/PKGBUILD
Diffstat (limited to 'extra/libxcb/xcb_auth-fix-memory-leak.patch')
-rw-r--r--extra/libxcb/xcb_auth-fix-memory-leak.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/extra/libxcb/xcb_auth-fix-memory-leak.patch b/extra/libxcb/xcb_auth-fix-memory-leak.patch
new file mode 100644
index 000000000..d1000913a
--- /dev/null
+++ b/extra/libxcb/xcb_auth-fix-memory-leak.patch
@@ -0,0 +1,38 @@
+From 5755582444ad0ba79e661ab3173cc38e9e588d83 Mon Sep 17 00:00:00 2001
+From: Nick Bowler <nbowler@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@draconx.ca>
+Signed-off-by: Julien Danjou <julien@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