diff -ru accountsservice-0.6.15.orig/debian/changelog accountsservice-0.6.15/debian/changelog --- accountsservice-0.6.15.orig/debian/changelog 2013-02-28 17:12:51.000000000 +0100 +++ accountsservice-0.6.15/debian/changelog 2013-03-19 08:32:38.735577063 +0100 @@ -1,3 +1,11 @@ +accountsservice (0.6.15-2ubuntu9.6) precise-proposed; urgency=low + + * debian/patches/0010-set-language.patch: + Run user_HOME_available() as user in order to prevent incorrect + failures when HOME is on NFS (LP: #1083605, LP: #1156670). + + -- Gunnar Hjalmarsson Tue, 19 Mar 2013 08:32:00 +0100 + accountsservice (0.6.15-2ubuntu9.5) precise-proposed; urgency=low * debian/patches/0009-language-tools.patch: diff -ru accountsservice-0.6.15.orig/debian/patches/0010-set-language.patch accountsservice-0.6.15/debian/patches/0010-set-language.patch --- accountsservice-0.6.15.orig/debian/patches/0010-set-language.patch 2012-09-25 12:15:24.000000000 +0200 +++ accountsservice-0.6.15/debian/patches/0010-set-language.patch 2013-03-19 08:10:51.609095373 +0100 @@ -31,7 +31,7 @@ break; case PROP_X_SESSION: g_value_set_string (value, user->x_session); -@@ -1085,6 +1093,423 @@ +@@ -1085,6 +1093,431 @@ return TRUE; } @@ -429,11 +429,16 @@ +static gboolean +user_HOME_available (User *user) +{ ++ /* run these tests as user to prevent incorrect ++ failures when HOME is on NFS */ ++ user_drop_privileges_to_user (user); ++ + GDir* homedir = g_dir_open (user->home_dir, 0, NULL); + -+ if (homedir == NULL) // HOME not found ++ if (homedir == NULL) { // HOME not found ++ user_regain_privileges (); + return FALSE; -+ else { ++ } else { + const char *entry, *path_to_entry; + do { + entry = g_dir_read_name (homedir); @@ -442,6 +447,7 @@ + continue; + if (g_strcmp0 (entry, NULL) == 0) { // HOME contains only symlinks + g_dir_close (homedir); ++ user_regain_privileges (); + return FALSE; + } else + break; @@ -449,13 +455,15 @@ + } + + g_dir_close (homedir); ++ user_regain_privileges (); ++ + return TRUE; +} + static void user_change_language_authorized_cb (Daemon *daemon, User *user, -@@ -1092,12 +1543,93 @@ +@@ -1100,12 +1551,93 @@ gpointer data) { @@ -553,7 +561,7 @@ save_extra_data (user); g_signal_emit (user, signals[CHANGED], 0); -@@ -1105,6 +1611,7 @@ +@@ -1113,6 +1619,7 @@ g_object_notify (G_OBJECT (user), "language"); } @@ -561,7 +569,7 @@ dbus_g_method_return (context); } -@@ -1156,11 +1664,38 @@ +@@ -1164,11 +1672,38 @@ gpointer data) { @@ -604,7 +612,7 @@ save_extra_data (user); -@@ -1169,6 +1704,7 @@ +@@ -1177,6 +1712,7 @@ g_object_notify (G_OBJECT (user), "formats_locale"); }