diff options
author | Ray Strode <rstrode@redhat.com> | 2010-07-02 11:46:25 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2010-07-02 11:46:25 -0400 |
commit | baf91fafe6aaf00697098cd569b8ee4c95d81c41 (patch) | |
tree | b53326dd2087922e242f3f4db0f121804c51ba4e | |
parent | 6e4f853c9b23d0e464c571558054b1dfee60a278 (diff) | |
download | gdm-baf91fafe6aaf00697098cd569b8ee4c95d81c41.tar.gz |
Fix up new getpw*() wrappers
Their logic was a little wrong, causing infinite loops.
-rw-r--r-- | common/gdm-common.c | 2 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-user-manager.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/common/gdm-common.c b/common/gdm-common.c index 1b344f33..adc42e60 100644 --- a/common/gdm-common.c +++ b/common/gdm-common.c @@ -83,7 +83,7 @@ gdm_get_pwent_for_name (const char *name, do { errno = 0; pwent = getpwnam (name); - } while (errno != EINTR); + } while (pwent == NULL && errno == EINTR); if (pwentp != NULL) { *pwentp = pwent; diff --git a/gui/simple-greeter/gdm-user-manager.c b/gui/simple-greeter/gdm-user-manager.c index b0fd88a4..9cb00a5d 100644 --- a/gui/simple-greeter/gdm-user-manager.c +++ b/gui/simple-greeter/gdm-user-manager.c @@ -1007,7 +1007,7 @@ get_pwent_for_name (const char *name, do { errno = 0; pwent = getpwnam (name); - } while (errno != EINTR); + } while (pwent == NULL && errno == EINTR); if (pwentp != NULL) { *pwentp = pwent; @@ -1025,7 +1025,7 @@ get_pwent_for_uid (uid_t uid, do { errno = 0; pwent = getpwuid (uid); - } while (errno != EINTR); + } while (pwent == NULL && errno == EINTR); if (pwentp != NULL) { *pwentp = pwent; |