diff -u gnome-control-center-2.27.91/debian/changelog gnome-control-center-2.27.91/debian/changelog --- gnome-control-center-2.27.91/debian/changelog +++ gnome-control-center-2.27.91/debian/changelog @@ -1,3 +1,11 @@ +gnome-control-center (1:2.27.91-0ubuntu4) karmic; urgency=low + + * debian/patches/98_ecryptfs_face.patch: write .face to + /home/.ecryptfs/$USER, if it exists, to make sure its available + in GDM for encrypted-home users, LP: #426724 + + -- Dustin Kirkland Wed, 09 Sep 2009 14:32:24 -0500 + gnome-control-center (1:2.27.91-0ubuntu3) karmic; urgency=low * debian/patches/95_desktop-effects-integration.patch: only in patch2: unchanged: --- gnome-control-center-2.27.91.orig/debian/patches/98_ecryptfs_face.patch +++ gnome-control-center-2.27.91/debian/patches/98_ecryptfs_face.patch @@ -0,0 +1,55 @@ +write .face to unecrypted space, if homedir is encrypted + +If the user's home directory is encrypted, their $HOME/.face file will +not be accessible by GDM before the user logs in and mounts their home +directory. + +In this case, we should additionally write the user's .face file to +their unencrypted space, in /home/.ecryptfs/$USER. + +https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/426724 + +Signed-off-by: Dustin Kirkland + + +diff -uprN gnome-control-center-2.27.91/capplets/about-me/gnome-about-me.c gnome-control-center-2.27.91.new/capplets/about-me/gnome-about-me.c +--- gnome-control-center-2.27.91/capplets/about-me/gnome-about-me.c 2009-08-17 03:40:16.000000000 -0500 ++++ gnome-control-center-2.27.91.new/capplets/about-me/gnome-about-me.c 2009-09-09 13:40:49.159657498 -0500 +@@ -528,6 +528,8 @@ about_me_update_photo (GnomeAboutMe *me) + guchar *data; + gsize length; + ++ char *ecryptfs; ++ + dialog = me->dialog; + + +@@ -599,6 +601,28 @@ about_me_update_photo (GnomeAboutMe *me) + + g_free (file); + ++ /* If the user has an encrypted home directory, we also need to ++ write the .face file to their unencrypted space, where gdm ++ can read this file before login and homedir mount */ ++ if (asprintf(&ecryptfs, "/home/.ecryptfs/%s", g_get_user_name ()) > 0) { ++ struct stat s; ++ if (stat(ecryptfs, &s) == 0) { ++ file = g_build_filename (ecryptfs, ".face", NULL); ++ if (g_file_set_contents (file, ++ (gchar *) photo->data.inlined.data, ++ photo->data.inlined.length, ++ &error) != FALSE) { ++ g_chmod (file, 0644); ++ } else { ++ g_warning ("Could not create %s: %s", file, error->message); ++ g_error_free (error); ++ } ++ ++ g_free (file); ++ } ++ g_free (ecryptfs); ++ } ++ + e_contact_photo_free (photo); + + } else if (me->image_changed && !me->have_image) {