From 2af22b06a437a375417b004d7dfad34cdb237e47 Mon Sep 17 00:00:00 2001 From: Wolfram Schneider Date: Mon, 29 Sep 1997 13:13:51 +0000 Subject: [PATCH] Endless loop. $ vipw [corrupt a line in editor, exit editor] pwd_mkdb: corrupted entry pwd_mkdb: at line #2 pwd_mkdb: /etc/pw.012585: Inappropriate file type or format re-edit the password file? [y]: n^D^D [hang] --- lib/libutil/pw_util.c | 10 +++++----- usr.sbin/vipw/pw_util.c | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/libutil/pw_util.c b/lib/libutil/pw_util.c index 6283b95bdcf..21e0ca5c7e0 100644 --- a/lib/libutil/pw_util.c +++ b/lib/libutil/pw_util.c @@ -202,14 +202,14 @@ pw_edit(notsetuid) void pw_prompt() { - int c; + int c, first; (void)printf("re-edit the password file? [y]: "); (void)fflush(stdout); - c = getchar(); - if (c != EOF && c != '\n') - while (getchar() != '\n'); - if (c == 'n') + first = c = getchar(); + while (c != '\n' && c != EOF) + c = getchar(); + if (first == 'n') pw_error(NULL, 0, 0); } diff --git a/usr.sbin/vipw/pw_util.c b/usr.sbin/vipw/pw_util.c index 6283b95bdcf..21e0ca5c7e0 100644 --- a/usr.sbin/vipw/pw_util.c +++ b/usr.sbin/vipw/pw_util.c @@ -202,14 +202,14 @@ pw_edit(notsetuid) void pw_prompt() { - int c; + int c, first; (void)printf("re-edit the password file? [y]: "); (void)fflush(stdout); - c = getchar(); - if (c != EOF && c != '\n') - while (getchar() != '\n'); - if (c == 'n') + first = c = getchar(); + while (c != '\n' && c != EOF) + c = getchar(); + if (first == 'n') pw_error(NULL, 0, 0); }