From 493ecd1e30cee3f4c7ffc7d29c80050a7f037b5c Mon Sep 17 00:00:00 2001
From: Antonio Ospite <ospite@studenti.unina.it>
Date: Mon, 18 Mar 2013 17:48:37 +0100
Subject: [PATCH 1/1] Split getting ans setting the cookie, and unset
 XAUTHORITY

---
 xudo.sh | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/xudo.sh b/xudo.sh
index 6947d7b..2e34bae 100755
--- a/xudo.sh
+++ b/xudo.sh
@@ -70,9 +70,18 @@ id $USERNAME > /dev/null || { echo "Invalid user." 1>&2; exit 1; }
 
 [ "x$@" != "x" ] || { usage 1>&2; exit 1; }
 
+
+# Get the authorization cookie from the current user.
+COOKIE="$(xauth nextract - $DISPLAY)"
+
+# XAUTHORITY needs to be unset now, so that the default $HOME/.Xauthority will
+# be used for the target user and not some locked auth file from the current
+# user.
+unset XAUTHORITY
+
 # Authorize the user.
 # Use "sudo -H" to cover the case when env_keep+="HOME" is set in /etc/sudoers
-xauth extract - $DISPLAY | sudo -H -u "$USERNAME" xauth merge -
+echo "$COOKIE" | sudo -H -u "$USERNAME" xauth nmerge -
 
 # Execute the command.
 # NOTE: -i or -s can be passed in order to open a shell
-- 
2.1.4