static void catch_signals (int);
-static void pw_entry(const char *name, struct passwd *pwent);
+static int pw_entry(const char *name, struct passwd *pwent);
static void catch_signals (unused int sig)
while (true) { /* repeatedly get login/password pairs */
char *cp;
- pw_entry ("root", &pwent); /* get entry from password file */
- if (pwent.pw_name == NULL) {
+ if (pw_entry("root", &pwent) == -1) { /* get entry from password file */
/*
* Fail secure
*/
- (void) puts (_("No password entry for 'root'"));
- exit (1);
+ (void) puts(_("No password entry for 'root'"));
+ exit(1);
}
/*
}
-static void
+static int
pw_entry(const char *name, struct passwd *pwent)
{
struct spwd *spwd;
struct passwd *passwd;
- if (!(passwd = getpwnam(name))) { /* local, no need for xgetpwnam */
- free(pwent->pw_name);
- pwent->pw_name = NULL;
- return;
- }
+ if (!(passwd = getpwnam(name))) /* local, no need for xgetpwnam */
+ return -1;
free(pwent->pw_name);
pwent->pw_name = xstrdup(passwd->pw_name);
if ((spwd = getspnam(name))) {
free(pwent->pw_passwd);
pwent->pw_passwd = xstrdup(spwd->sp_pwdp);
- return;
+ return 0;
}
#endif
free(pwent->pw_passwd);
pwent->pw_passwd = xstrdup(passwd->pw_passwd);
+ return 0;
}