Package: hibernate
Version: 1.96~pre-svn.r1136-1
Severity: wishlist

Hello

The sylpheed_claws scriptlet makes the implicit assumption that the XAUTHORITY 
variable is exported when calling get_env_var_of_process.

Given my poor understanding of the X session mechanism, I might probably be 
wrong, but I suspect that XAUTHORITY is not always exported and that even more, 
it is not mandatory at all to export it.

Provided the here above assumption is correct, the xauthority variable obtained 
thru get_env_var_of_process might sometimes be empty and the commands using the 
variable in the scriptlet might fail.

Shouldn't sylpheed_claws scriptlet make the additional checking that xauthority 
variable is not empty and fall back to $HOME/.Xauthority to give itself a 
chance to succeed? It seems that it is what the main script does within 
FindXServer(): it does not rely only on /proc/<pid>/environ and proceeds to 
additional checkings.
The proposed patch for sylpheed_claws in attachment is inspired by 
FindXServer() and proceeds to the same checkings. It applies to current SVN 
upstream trunk (rev. 1161).

In the other hand I might be completely wrong because maybe my 
x-session-manager does not behave correctly or because I should always export 
XAUTHORITY in my .Xession (I used to export XAUTHORITY as a simple mean to be 
able to launch X applications after su to root but I recently dropped it in 
favor of pam_xauth...and hibernate is the only drawback I found).

Best regards.

Pascal D.

--- sylpheed_claws	2007-10-15 20:55:33.000000000 +0200
+++ sylpheed_claws.new	2007-10-15 21:37:20.000000000 +0200
@@ -20,11 +20,17 @@
 
     local pid i=0
     for pid in `pidof sylpheed-claws`; do
-	local user display xauthority
+	local user display xauthority xhome
+
+        [ -d "/proc/$pid/" ] || continue
 
 	user=$(get_env_var_of_process $pid USER)
 	display=$(get_env_var_of_process $pid DISPLAY)
 	xauthority=$(get_env_var_of_process $pid XAUTHORITY)
+        xhome=$(get_env_var_of_process $pid HOME)
+        [ -z $xauthority ] && [ -n $xhome ] && [ -f $xhome/.Xauthority ] && xauthority=$xhome/.Xauthority
+
+        [ -z $xauthority ] && continue
 
 	# using this eval-crap to be POSIX-compliant (arrays are nonstandard)
 	eval "SYLPHEEDCLAWS_LOGGED_OUT_SESSIONS_USER_$i='$user'"

Reply via email to