public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in media-sound/pulseaudio/files: pulseaudio-0.9.22-xcb-atom-2.patch
@ 2011-05-13  4:57 Arun Raghavan (ford_prefect)
  0 siblings, 0 replies; only message in thread
From: Arun Raghavan (ford_prefect) @ 2011-05-13  4:57 UTC (permalink / raw
  To: gentoo-commits

ford_prefect    11/05/13 04:57:57

  Added:                pulseaudio-0.9.22-xcb-atom-2.patch
  Log:
  Bump to 0.9.22-r2 since we need one more patch for newer xcb-util (fixes segv+leaks). Remove -r1 since the first patch is not enough.
  
  (Portage version: 2.2.0_alpha31/cvs/Linux x86_64)

Revision  Changes    Path
1.1                  media-sound/pulseaudio/files/pulseaudio-0.9.22-xcb-atom-2.patch

file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-sound/pulseaudio/files/pulseaudio-0.9.22-xcb-atom-2.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-sound/pulseaudio/files/pulseaudio-0.9.22-xcb-atom-2.patch?rev=1.1&content-type=text/plain

Index: pulseaudio-0.9.22-xcb-atom-2.patch
===================================================================
From b72fc9b4f158bafb66a7de28ce038986d96ce850 Mon Sep 17 00:00:00 2001
From: Arnaud Fontaine <arnau@debian.org>
Date: Tue, 29 Mar 2011 22:56:28 +0159
Subject: [PATCH] x11: More XCB fixes.

Commit 65ef80b fixed building with xcb-util >= 0.3.8, but the reply is never
checked (possible SIGSEGV if the reply is NULL) nor freed (memory leak at each
call of the functions).

Also, remove include and dependencies on xcb-atom, as it was only meaningful
for xcb_atom_get() and STRING, and depend instead on xcb >= 1.6 for
XCB_ATOM_STRING.
---
 configure.ac            |    2 +-
 src/pulsecore/x11prop.c |   38 +++++++++++++++++++++++++-------------
 2 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/configure.ac b/configure.ac
index 299dd49..ed9bd17 100644
--- a/configure.ac
+++ b/configure.ac
@@ -547,7 +547,7 @@ AC_ARG_ENABLE([x11],
         [x11=auto])
 
 if test "x${x11}" != xno ; then
-    PKG_CHECK_MODULES(X11, [ x11-xcb ice sm xtst xcb-atom ],
+    PKG_CHECK_MODULES(X11, [ x11-xcb xcb >= 1.6 ice sm xtst ],
         HAVE_X11=1,
         [
             HAVE_X11=0
diff --git a/src/pulsecore/x11prop.c b/src/pulsecore/x11prop.c
index d66c48f..8fca219 100644
--- a/src/pulsecore/x11prop.c
+++ b/src/pulsecore/x11prop.c
@@ -30,7 +30,6 @@
 #include <pulsecore/macro.h>
 
 #include <xcb/xproto.h>
-#include <xcb/xcb_atom.h>
 
 #define PA_XCB_FORMAT 8
 
@@ -50,7 +49,6 @@ static xcb_screen_t *screen_of_display(xcb_connection_t *xcb, int screen)
 
 void pa_x11_set_prop(xcb_connection_t *xcb, int screen, const char *name, const char *data) {
     xcb_screen_t *xs;
-    xcb_intern_atom_cookie_t cookie;
     xcb_intern_atom_reply_t *reply;
 
     pa_assert(xcb);
@@ -58,26 +56,36 @@ void pa_x11_set_prop(xcb_connection_t *xcb, int screen, const char *name, const
     pa_assert(data);
 
     if ((xs = screen_of_display(xcb, screen))) {
-        cookie = xcb_intern_atom(xcb, 0, strlen(name), name);
-        reply = xcb_intern_atom_reply(xcb, cookie, NULL);
+        reply = xcb_intern_atom_reply(xcb,
+                                      xcb_intern_atom(xcb, 0, strlen(name), name),
+                                      NULL);
 
-        xcb_change_property(xcb, XCB_PROP_MODE_REPLACE, xs->root, reply->atom, XCB_ATOM_STRING, PA_XCB_FORMAT, (int) strlen(data), (const void*) data);
+        if (reply) {
+            xcb_change_property(xcb, XCB_PROP_MODE_REPLACE, xs->root, reply->atom,
+                                XCB_ATOM_STRING, PA_XCB_FORMAT,
+                                (int) strlen(data), (const void*) data);
+
+            free(reply);
+        }
     }
 }
 
 void pa_x11_del_prop(xcb_connection_t *xcb, int screen, const char *name) {
     xcb_screen_t *xs;
-    xcb_intern_atom_cookie_t cookie;
     xcb_intern_atom_reply_t *reply;
 
     pa_assert(xcb);
     pa_assert(name);
 
     if ((xs = screen_of_display(xcb, screen))) {
-        cookie = xcb_intern_atom(xcb, 0, strlen(name), name);
-        reply = xcb_intern_atom_reply(xcb, cookie, NULL);
-
-        xcb_delete_property(xcb, xs->root, reply->atom);
+        reply = xcb_intern_atom_reply(xcb,
+                                      xcb_intern_atom(xcb, 0, strlen(name), name),
+                                      NULL);
+
+        if (reply) {
+            xcb_delete_property(xcb, xs->root, reply->atom);
+            free(reply);
+        }
     }
 }
 
@@ -87,7 +95,6 @@ char* pa_x11_get_prop(xcb_connection_t *xcb, int screen, const char *name, char
     xcb_get_property_cookie_t req;
     xcb_get_property_reply_t* prop = NULL;
     xcb_screen_t *xs;
-    xcb_intern_atom_cookie_t cookie;
     xcb_intern_atom_reply_t *reply;
 
     pa_assert(xcb);
@@ -106,10 +113,15 @@ char* pa_x11_get_prop(xcb_connection_t *xcb, int screen, const char *name, char
         xs = screen_of_display(xcb, 0);
 
     if (xs) {
-        cookie = xcb_intern_atom(xcb, 0, strlen(name), name);
-        reply = xcb_intern_atom_reply(xcb, cookie, NULL);
+        reply = xcb_intern_atom_reply(xcb,
+                                      xcb_intern_atom(xcb, 0, strlen(name), name),
+                                      NULL);
+
+        if (!reply)
+            goto finish;
 
         req = xcb_get_property(xcb, 0, xs->root, reply->atom, XCB_ATOM_STRING, 0, (uint32_t)(l-1));
+        free(reply);
         prop = xcb_get_property_reply(xcb, req, NULL);
 
         if (!prop)
-- 
1.6.3.3







^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-05-13  4:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-13  4:57 [gentoo-commits] gentoo-x86 commit in media-sound/pulseaudio/files: pulseaudio-0.9.22-xcb-atom-2.patch Arun Raghavan (ford_prefect)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox