xserver: Branch 'master'

Keith Packard keithp at kemper.freedesktop.org
Sun Mar 27 18:16:58 PDT 2011


 os/client.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

New commits:
commit 2ef4ff45ef1fcfc4967ebe3d550408769e5f6500
Author: Erkki Seppälä <erkki.seppala at vincit.fi>
Date:   Fri Mar 25 10:38:23 2011 +0200

    os/client: Prevent rare fd leak in DetermineClientPid
    
    DetermineClientPid didn't close file descriptor if read on
    /proc/pid/cmdline failed. Adjusted the code to disregard the close
    return value and perform the return after that, if the read failed or
    returned EOF.
    
    Signed-off-by: Mark Kettenis <mark.kettenis at xs4all.nl>
    Signed-off-by: Erkki Seppälä <erkki.seppala at vincit.fi>
    Reviewed-by: Rami Ylimäki <rami.ylimaki at vincit.fi>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/os/client.c b/os/client.c
index 1311855..b534977 100644
--- a/os/client.c
+++ b/os/client.c
@@ -140,10 +140,9 @@ void DetermineClientCmd(pid_t pid, const char **cmdname, const char **cmdargs)
     /* Read the contents of /proc/pid/cmdline. It should contain the
      * process name and arguments. */
     totsize = read(fd, path, sizeof(path));
+    close(fd);
     if (totsize <= 0)
         return;
-    if (close(fd) < 0)
-        return;
     path[totsize - 1] = '\0';
 
     /* Contruct the process name without arguments. */


More information about the xorg-commit mailing list