summaryrefslogtreecommitdiff
path: root/daemon/gdm-slave.c
diff options
context:
space:
mode:
authorWilliam Jon McCann <jmccann@redhat.com>2010-06-30 10:20:43 -0400
committerRay Strode <rstrode@redhat.com>2010-08-17 13:45:20 -0400
commit9310418c63258dfd70cef46e2682cd9adc6c8f21 (patch)
tree3931193258559e6570482801acebc46b3aed3d1f /daemon/gdm-slave.c
parent36e72382eb19c31ee9e59b72f27cb8537ef960dd (diff)
downloadgdm-9310418c63258dfd70cef46e2682cd9adc6c8f21.tar.gz
Wrap getpw* calls to retry in EINTR
if getpwnam(username) returns NULL, errno needs to be checked for EINTR. This indicates that a signal was received while waiting for the blocking call to return, and getpwnam() should be retried.
Diffstat (limited to 'daemon/gdm-slave.c')
-rw-r--r--daemon/gdm-slave.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c
index c0c40381..f0e93d52 100644
--- a/daemon/gdm-slave.c
+++ b/daemon/gdm-slave.c
@@ -201,7 +201,7 @@ get_script_environment (GdmSlave *slave,
g_hash_table_insert (hash, g_strdup ("USERNAME"),
g_strdup (username));
- pwent = getpwnam (username);
+ gdm_get_pwent_for_name (username, &pwent);
if (pwent != NULL) {
if (pwent->pw_dir != NULL && pwent->pw_dir[0] != '\0') {
g_hash_table_insert (hash, g_strdup ("HOME"),
@@ -1018,7 +1018,7 @@ gdm_slave_get_timed_login_details (GdmSlave *slave,
g_free (username);
if (usernamep != NULL && *usernamep != NULL) {
- pwent = getpwnam (*usernamep);
+ gdm_get_pwent_for_name (*usernamep, &pwent);
if (pwent == NULL) {
g_debug ("Invalid username %s for auto/timed login",
*usernamep);
@@ -1052,7 +1052,7 @@ _get_uid_and_gid_for_user (const char *username,
g_assert (username != NULL);
errno = 0;
- passwd_entry = getpwnam (username);
+ gdm_get_pwent_for_name (username, &passwd_entry);
if (passwd_entry == NULL) {
return FALSE;