[gnome-shell] Make getting the environment from gnome-session more robust



commit c4406d4acee44865ed23c765e5f0e659d97263e7
Author: Owen W. Taylor <otaylor fishsoup net>
Date:   Sat Apr 24 09:41:03 2010 -0400

    Make getting the environment from gnome-session more robust
    
    readlink() on /proc/<pid>/exe can have results like:
    
     /usr/bin/gnome-keyring-daemon.#prelink#.5DFZsF (deleted)
     /usr/bin/gnome-session (deleted)
    
    To find gnome-session in a more robust way, read /proc/<pid>/cmdline
    instead.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=616706

 src/gnome-shell.in |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/src/gnome-shell.in b/src/gnome-shell.in
index 27f7b0d..0cb6db7 100644
--- a/src/gnome-shell.in
+++ b/src/gnome-shell.in
@@ -37,10 +37,15 @@ def get_running_session_environs():
         if not stat.st_uid == myuid:
             continue
         try:
-            exe = os.readlink(piddir + '/exe')
-        except OSError, e:
+            f = open(piddir + "/cmdline")
+            command = f.read()
+            f.close()
+        except IOError, e:
             continue
-        if os.path.basename(exe) != 'gnome-session':
+        # /proc/cmdline is separated and terminated by NULs
+        command = command.split("\x00")[0]
+        command = os.path.basename(command)
+        if command != 'gnome-session':
             continue
         try:
             f = open(os.path.join(piddir, 'environ'))



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]