summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2010-07-02 11:46:25 -0400
committerRay Strode <rstrode@redhat.com>2010-07-02 11:46:25 -0400
commitbaf91fafe6aaf00697098cd569b8ee4c95d81c41 (patch)
treeb53326dd2087922e242f3f4db0f121804c51ba4e
parent6e4f853c9b23d0e464c571558054b1dfee60a278 (diff)
downloadgdm-baf91fafe6aaf00697098cd569b8ee4c95d81c41.tar.gz
Fix up new getpw*() wrappers
Their logic was a little wrong, causing infinite loops.
-rw-r--r--common/gdm-common.c2
-rw-r--r--gui/simple-greeter/gdm-user-manager.c4
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;