diff options
-rw-r--r-- | usr.bin/chpass/edit.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/usr.bin/chpass/edit.c b/usr.bin/chpass/edit.c index b1403a2e627b..57a1c16a5541 100644 --- a/usr.bin/chpass/edit.c +++ b/usr.bin/chpass/edit.c @@ -174,7 +174,7 @@ verify(pw) struct stat sb; FILE *fp; int len; - char buf[LINE_MAX]; + static char buf[LINE_MAX]; if (!(fp = fopen(tempname, "r"))) pw_error(tempname, 1, 1); @@ -233,6 +233,9 @@ bad: (void)fclose(fp); (void)sprintf(pw->pw_gecos = p, "%s,%s,%s,%s", list[E_NAME].save, list[E_LOCATE].save, list[E_BPHONE].save, list[E_HPHONE].save); + while ((len = strlen(pw->pw_gecos)) && pw->pw_gecos[len - 1] == ',') + pw->pw_gecos[len - 1] = '\0'; + if (snprintf(buf, sizeof(buf), "%s:%s:%d:%d:%s:%ld:%ld:%s:%s:%s", pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid, pw->pw_class, |