diff -u gdm-2.27.90/debian/changelog gdm-2.27.90/debian/changelog --- gdm-2.27.90/debian/changelog +++ gdm-2.27.90/debian/changelog @@ -1,3 +1,11 @@ +gdm (2.27.90-0ubuntu3~ppa1) karmic; urgency=low + + * debian/patches/15_face_in_ecryptfs.patch: look for .face in + /home/.ecryptfs/$USER, for users with encrypted home directories, + LP: #426724 + + -- Dustin Kirkland Wed, 09 Sep 2009 14:34:41 -0500 + gdm (2.27.90-0ubuntu2) karmic; urgency=low [ Robert Ancell ] only in patch2: unchanged: --- gdm-2.27.90.orig/debian/patches/15_face_in_ecryptfs.patch +++ gdm-2.27.90/debian/patches/15_face_in_ecryptfs.patch @@ -0,0 +1,98 @@ +look for .face in /home/.ecryptfs/$USER + +When the user's home directory is encrypted using eCryptfs, the .face file is not +accessible until after the user logs in. + +Clearly a chicken-and-egg problem when the user wants a .face file accessible +in the gdm window, before login has been performed. + +Thus, look for a .face file in /home/.ecryptfs/$USER/.face, which is not encrypted, +and is available to GDM. + +https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/426724 + +Signed-off-by: Dustin Kirkland + + +diff -uprN gdm-2.27.90.orig/gui/gdmsetup/gdm-user.c gdm-2.27.90.new/gui/gdmsetup/gdm-user.c +--- gdm-2.27.90.orig/gui/gdmsetup/gdm-user.c 2009-09-09 13:03:43.463419591 -0500 ++++ gdm-2.27.90.new/gui/gdmsetup/gdm-user.c 2009-09-09 12:30:29.443100868 -0500 +@@ -747,6 +747,7 @@ render_icon_from_home (GdmUser *user, + gboolean is_autofs; + gboolean res; + char *filesystem_type; ++ char *ecryptfs; + + is_local = FALSE; + +@@ -795,6 +796,29 @@ render_icon_from_home (GdmUser *user, + } + g_free (path); + ++ /* Then, try "/home/.ecryptfs/$USER/.face" (homedir is encrypted) */ ++ if (retval == NULL) { ++ if (asprintf(&ecryptfs, "/home/.ecryptfs/%s", user->user_name) < 0) { ++ return NULL; ++ } ++ path = g_build_filename (ecryptfs, ".face", NULL); ++ res = check_user_file (path, ++ user->uid, ++ MAX_FILE_SIZE, ++ RELAX_GROUP, ++ RELAX_OTHER); ++ if (res) { ++ retval = gdk_pixbuf_new_from_file_at_size (path, ++ icon_size, ++ icon_size, ++ NULL); ++ } else { ++ retval = NULL; ++ } ++ g_free (path); ++ g_free (ecryptfs); ++ } ++ + /* Next, try "~/.face.icon" */ + if (retval == NULL) { + path = g_build_filename (user->home_dir, +diff -uprN gdm-2.27.90.orig/gui/simple-greeter/gdm-user.c gdm-2.27.90.new/gui/simple-greeter/gdm-user.c +--- gdm-2.27.90.orig/gui/simple-greeter/gdm-user.c 2009-08-24 14:31:18.000000000 -0500 ++++ gdm-2.27.90.new/gui/simple-greeter/gdm-user.c 2009-09-09 13:02:03.166976563 -0500 +@@ -851,6 +851,7 @@ render_icon_from_home (GdmUser *user, + gboolean is_autofs; + gboolean res; + char *filesystem_type; ++ char *ecryptfs; + + is_local = FALSE; + +@@ -899,6 +900,29 @@ render_icon_from_home (GdmUser *user, + } + g_free (path); + ++ /* Then, try "/home/.ecryptfs/$USER/.face" (homedir is encrypted) */ ++ if (retval == NULL) { ++ if (asprintf(&ecryptfs, "/home/.ecryptfs/%s", user->user_name) < 0) { ++ return NULL; ++ } ++ path = g_build_filename (ecryptfs, ".face", NULL); ++ res = check_user_file (path, ++ user->uid, ++ MAX_FILE_SIZE, ++ RELAX_GROUP, ++ RELAX_OTHER); ++ if (res) { ++ retval = gdk_pixbuf_new_from_file_at_size (path, ++ icon_size, ++ icon_size, ++ NULL); ++ } else { ++ retval = NULL; ++ } ++ g_free (path); ++ g_free (ecryptfs); ++ } ++ + /* Next, try "~/.face.icon" */ + if (retval == NULL) { + path = g_build_filename (user->home_dir,