[Xcb-commit] src

Julien Danjou jdanjou at kemper.freedesktop.org
Tue Nov 23 05:59:04 PST 2010


 src/xcb_auth.c |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

New commits:
commit 5755582444ad0ba79e661ab3173cc38e9e588d83
Author: Nick Bowler <nbowler at draconx.ca>
Date:   Wed Nov 10 20:49:41 2010 -0500

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


More information about the xcb-commit mailing list