diff options
author | William Jon McCann <jmccann@redhat.com> | 2010-06-30 10:20:43 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2010-08-17 13:45:20 -0400 |
commit | 9310418c63258dfd70cef46e2682cd9adc6c8f21 (patch) | |
tree | 3931193258559e6570482801acebc46b3aed3d1f /daemon/gdm-slave.c | |
parent | 36e72382eb19c31ee9e59b72f27cb8537ef960dd (diff) | |
download | gdm-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.c | 6 |
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; |