* lib/exitcodes.h: Define E_SUCCESS as EXIT_SUCCESS. Added FIXMEs.

* libmisc/chowntty.c, libmisc/rlogin.c, libmisc/sub.c,
	src/newusers.c, libmisc/sulog.c, libmisc/system.c, src/logoutd.c,
	src/groups.c, src/id.c, lib/encrypt.c, libmisc/audit_help.c,
	libmisc/limits.c: Return EXIT_FAILURE instead of 1, and
	EXIT_SUCCESS instead of 0.
	* libmisc/audit_help.c: Replace an fprintf() by fputs().
	* libmisc/audit_help.c: Remove documentation of the audit_logger
	returned values. The function returns void.
	* libmisc/system.c: Only return status if waitpid succeeded.
	Return -1 otherwise.
This commit is contained in:
nekral-guest 2009-04-30 21:08:49 +00:00
parent 0f448edf19
commit a326ffa435
14 changed files with 74 additions and 49 deletions

View File

@ -1,3 +1,17 @@
2009-04-30 Nicolas François <nicolas.francois@centraliens.net>
* lib/exitcodes.h: Define E_SUCCESS as EXIT_SUCCESS. Added FIXMEs.
* libmisc/chowntty.c, libmisc/rlogin.c, libmisc/sub.c,
src/newusers.c, libmisc/sulog.c, libmisc/system.c, src/logoutd.c,
src/groups.c, src/id.c, lib/encrypt.c, libmisc/audit_help.c,
libmisc/limits.c: Return EXIT_FAILURE instead of 1, and
EXIT_SUCCESS instead of 0.
* libmisc/audit_help.c: Replace an fprintf() by fputs().
* libmisc/audit_help.c: Remove documentation of the audit_logger
returned values. The function returns void.
* libmisc/system.c: Only return status if waitpid succeeded.
Return -1 otherwise.
2009-04-28 Nicolas François <nicolas.francois@centraliens.net> 2009-04-28 Nicolas François <nicolas.francois@centraliens.net>
* NEWS, src/chpasswd.c: Added support for changing the passwords * NEWS, src/chpasswd.c: Added support for changing the passwords

View File

@ -53,7 +53,7 @@ char *pw_encrypt (const char *clear, const char *salt)
* expect us to return NULL, so... * expect us to return NULL, so...
*/ */
perror ("crypt"); perror ("crypt");
exit (1); exit (EXIT_FAILURE);
} }
/* The GNU crypt does not return NULL if the algorithm is not /* The GNU crypt does not return NULL if the algorithm is not
@ -82,11 +82,13 @@ char *pw_encrypt (const char *clear, const char *salt)
fprintf (stderr, fprintf (stderr,
_("crypt method not supported by libcrypt? (%s)\n"), _("crypt method not supported by libcrypt? (%s)\n"),
method); method);
exit (1); exit (EXIT_FAILURE);
} }
if (strlen (cp) != 13) if (strlen (cp) != 13) {
return cp; /* nonstandard crypt() in libc, better bail out */ return cp; /* nonstandard crypt() in libc, better bail out */
}
strcpy (cipher, cp); strcpy (cipher, cp);
return cipher; return cipher;

View File

@ -32,7 +32,12 @@
/* /*
* Exit codes used by shadow programs * Exit codes used by shadow programs
*/ */
#define E_SUCCESS 0 /* success */ #define E_SUCCESS EXIT_SUCCESS /* success */
/*
* FIXME: other values should differ from EXIT_FAILURE (and EXIT_SUCCESS).
*
* FIXME: reserve EXIT_FAILURE for internal failures.
*/
#define E_NOPERM 1 /* permission denied */ #define E_NOPERM 1 /* permission denied */
#define E_USAGE 2 /* invalid command syntax */ #define E_USAGE 2 /* invalid command syntax */
#define E_BAD_ARG 3 /* invalid argument to option */ #define E_BAD_ARG 3 /* invalid argument to option */

View File

@ -53,12 +53,14 @@ void audit_help_open (void)
if (audit_fd < 0) { if (audit_fd < 0) {
/* You get these only when the kernel doesn't have /* You get these only when the kernel doesn't have
* audit compiled in. */ * audit compiled in. */
if (errno == EINVAL || errno == EPROTONOSUPPORT || if ( (errno == EINVAL)
errno == EAFNOSUPPORT) || (errno == EPROTONOSUPPORT)
|| (errno == EAFNOSUPPORT)) {
return; return;
fprintf (stderr, }
_("Cannot open audit interface - aborting.\n")); (void) fputs (_("Cannot open audit interface - aborting.\n"),
exit (1); stderr);
exit (EXIT_FAILURE);
} }
} }
@ -73,7 +75,6 @@ void audit_help_open (void)
* name - user's account or group name. If not available use NULL. * name - user's account or group name. If not available use NULL.
* id - uid or gid that the operation is being performed on. This is used * id - uid or gid that the operation is being performed on. This is used
* only when user is NULL. * only when user is NULL.
* result - 1 is "success" and 0 is "failed"
*/ */
void audit_logger (int type, const char *pgname, const char *op, void audit_logger (int type, const char *pgname, const char *op,
const char *name, unsigned int id, const char *name, unsigned int id,

View File

@ -83,7 +83,7 @@ void chown_tty (const struct passwd *info)
info->pw_name, strerror (err))); info->pw_name, strerror (err)));
if (EROFS != err) { if (EROFS != err) {
closelog (); closelog ();
exit (1); exit (EXIT_FAILURE);
} }
} }
#ifdef __linux__ #ifdef __linux__

View File

@ -436,7 +436,7 @@ void setup_limits (const struct passwd *info)
LOGIN_ERROR_LOGIN) { LOGIN_ERROR_LOGIN) {
(void) fputs (_("Too many logins.\n"), stderr); (void) fputs (_("Too many logins.\n"), stderr);
(void) sleep (2); /* XXX: Should be FAIL_DELAY */ (void) sleep (2); /* XXX: Should be FAIL_DELAY */
exit (1); exit (EXIT_FAILURE);
} }
} }
#endif #endif

View File

@ -114,7 +114,7 @@ static void get_remote_string (char *buf, size_t size)
{ {
for (;;) { for (;;) {
if (read (0, buf, 1) != 1) { if (read (0, buf, 1) != 1) {
exit (1); exit (EXIT_FAILURE);
} }
if ('\0' == *buf) { if ('\0' == *buf) {
return; return;

View File

@ -58,7 +58,7 @@ void subsystem (const struct passwd *pw)
printf (_("Invalid root directory '%s'\n"), pw->pw_dir); printf (_("Invalid root directory '%s'\n"), pw->pw_dir);
SYSLOG ((LOG_WARN, BAD_SUBROOT2, pw->pw_dir, pw->pw_name)); SYSLOG ((LOG_WARN, BAD_SUBROOT2, pw->pw_dir, pw->pw_name));
closelog (); closelog ();
exit (1); exit (EXIT_FAILURE);
} }
/* /*
@ -71,6 +71,6 @@ void subsystem (const struct passwd *pw)
pw->pw_dir); pw->pw_dir);
SYSLOG ((LOG_WARN, NO_SUBROOT2, pw->pw_dir, pw->pw_name)); SYSLOG ((LOG_WARN, NO_SUBROOT2, pw->pw_dir, pw->pw_name));
closelog (); closelog ();
exit (1); exit (EXIT_FAILURE);
} }
} }

View File

@ -83,7 +83,7 @@ void sulog (const char *tty, bool success, const char *oldname, const char *name
"can't switch back to group `%d' in sulog", "can't switch back to group `%d' in sulog",
oldgid)); oldgid));
/* Do not return if the group permission were raised. */ /* Do not return if the group permission were raised. */
exit (1); exit (EXIT_FAILURE);
} }
if (fp == (FILE *) 0) { if (fp == (FILE *) 0) {
return; /* can't open or create logfile */ return; /* can't open or create logfile */

View File

@ -51,8 +51,11 @@ int safe_system (const char *command,
} }
if (pid) { /* Parent */ if (pid) { /* Parent */
waitpid (pid, &status, 0); if (waitpid (pid, &status, 0) > 0) {
return status; return status;
} else {
return -1;
}
} }
fd = open ("/dev/null", O_RDWR); fd = open ("/dev/null", O_RDWR);
@ -64,6 +67,6 @@ int safe_system (const char *command,
execve (command, (char *const *) argv, (char *const *) env); execve (command, (char *const *) argv, (char *const *) env);
fprintf (stderr, _("Failed to exec '%s'\n"), argv[0]); fprintf (stderr, _("Failed to exec '%s'\n"), argv[0]);
exit (-1); exit (EXIT_FAILURE);
} }

View File

@ -64,7 +64,7 @@ static void print_groups (const char *member)
if (NULL == pwd) { if (NULL == pwd) {
(void) fprintf (stderr, _("%s: unknown user %s\n"), (void) fprintf (stderr, _("%s: unknown user %s\n"),
Prog, member); Prog, member);
exit (1); exit (EXIT_FAILURE);
} }
setgrent (); setgrent ();
@ -146,7 +146,7 @@ int main (int argc, char **argv)
ngroups = getgroups (sys_ngroups, groups); ngroups = getgroups (sys_ngroups, groups);
if (ngroups < 0) { if (ngroups < 0) {
perror ("getgroups"); perror ("getgroups");
exit (1); exit (EXIT_FAILURE);
} }
/* /*
@ -203,7 +203,7 @@ int main (int argc, char **argv)
if (NULL != logname) { if (NULL != logname) {
print_groups (logname); print_groups (logname);
} else { } else {
exit (1); exit (EXIT_FAILURE);
} }
#endif #endif
} else { } else {
@ -214,6 +214,6 @@ int main (int argc, char **argv)
*/ */
print_groups (argv[1]); print_groups (argv[1]);
} }
exit (0); return EXIT_SUCCESS;
} }

View File

@ -57,7 +57,7 @@ static void usage (void)
#else #else
(void) fputs (_("Usage: id\n"), stderr); (void) fputs (_("Usage: id\n"), stderr);
#endif #endif
exit (1); exit (EXIT_FAILURE);
} }
/*ARGSUSED*/ int main (int argc, char **argv) /*ARGSUSED*/ int main (int argc, char **argv)
@ -201,7 +201,7 @@ static void usage (void)
* Finish off the line. * Finish off the line.
*/ */
(void) putchar ('\n'); (void) putchar ('\n');
exit (0);
/* NOT REACHED */ return EXIT_SUCCESS;
} }

View File

@ -175,11 +175,11 @@ int main (int argc, char **argv)
pid = fork (); pid = fork ();
if (pid > 0) { if (pid > 0) {
/* parent */ /* parent */
exit (0); exit (EXIT_SUCCESS);
} else if (pid < 0) { } else if (pid < 0) {
/* error */ /* error */
perror ("fork"); perror ("fork");
exit (1); exit (EXIT_FAILURE);
} }
#endif /* !DEBUG */ #endif /* !DEBUG */
@ -276,7 +276,7 @@ int main (int argc, char **argv)
/* /*
* This child has done all it can, drop dead. * This child has done all it can, drop dead.
*/ */
exit (0); exit (EXIT_SUCCESS);
} }
#ifdef USE_UTMPX #ifdef USE_UTMPX
@ -293,7 +293,7 @@ int main (int argc, char **argv)
*/ */
while (wait (&status) != -1); while (wait (&status) != -1);
} }
return 1;
/* NOT REACHED */ return EXIT_FAILURE;
} }

View File

@ -126,7 +126,7 @@ static void usage (void)
" crypt algorithms\n") " crypt algorithms\n")
#endif #endif
); );
exit (1); exit (EXIT_FAILURE);
} }
/* /*
@ -529,7 +529,7 @@ static void process_flags (int argc, char **argv)
char buf[BUFSIZ]; char buf[BUFSIZ];
snprintf (buf, sizeof buf, "%s: %s", Prog, argv[1]); snprintf (buf, sizeof buf, "%s: %s", Prog, argv[1]);
perror (buf); perror (buf);
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
} }
@ -593,7 +593,7 @@ static void check_perms (void)
fprintf (stderr, fprintf (stderr,
_("%s: Cannot determine your user name.\n"), _("%s: Cannot determine your user name.\n"),
Prog); Prog);
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
retval = pam_start ("newusers", pampw->pw_name, &conv, &pamh); retval = pam_start ("newusers", pampw->pw_name, &conv, &pamh);
@ -611,7 +611,7 @@ static void check_perms (void)
} }
if (PAM_SUCCESS != retval) { if (PAM_SUCCESS != retval) {
fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); fprintf (stderr, _("%s: PAM authentication failed\n"), Prog);
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
#endif /* USE_PAM */ #endif /* USE_PAM */
#endif /* ACCT_TOOLS_SETUID */ #endif /* ACCT_TOOLS_SETUID */
@ -632,7 +632,7 @@ static void open_files (void)
fprintf (stderr, fprintf (stderr,
_("%s: cannot lock %s; try again later.\n"), _("%s: cannot lock %s; try again later.\n"),
Prog, pw_dbname ()); Prog, pw_dbname ());
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
pw_locked = true; pw_locked = true;
if (is_shadow) { if (is_shadow) {
@ -640,7 +640,7 @@ static void open_files (void)
fprintf (stderr, fprintf (stderr,
_("%s: cannot lock %s; try again later.\n"), _("%s: cannot lock %s; try again later.\n"),
Prog, spw_dbname ()); Prog, spw_dbname ());
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
spw_locked = true; spw_locked = true;
} }
@ -648,7 +648,7 @@ static void open_files (void)
fprintf (stderr, fprintf (stderr,
_("%s: cannot lock %s; try again later.\n"), _("%s: cannot lock %s; try again later.\n"),
Prog, gr_dbname ()); Prog, gr_dbname ());
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
gr_locked = true; gr_locked = true;
#ifdef SHADOWGRP #ifdef SHADOWGRP
@ -657,7 +657,7 @@ static void open_files (void)
fprintf (stderr, fprintf (stderr,
_("%s: cannot lock %s; try again later.\n"), _("%s: cannot lock %s; try again later.\n"),
Prog, sgr_dbname ()); Prog, sgr_dbname ());
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
sgr_locked = true; sgr_locked = true;
} }
@ -665,20 +665,20 @@ static void open_files (void)
if (pw_open (O_RDWR) == 0) { if (pw_open (O_RDWR) == 0) {
fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ());
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
if (is_shadow && (spw_open (O_RDWR) == 0)) { if (is_shadow && (spw_open (O_RDWR) == 0)) {
fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ());
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
if (gr_open (O_RDWR) == 0) { if (gr_open (O_RDWR) == 0) {
fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ());
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
#ifdef SHADOWGRP #ifdef SHADOWGRP
if (is_shadow_grp && (sgr_open (O_RDWR) == 0)) { if (is_shadow_grp && (sgr_open (O_RDWR) == 0)) {
fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ());
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
#endif #endif
} }
@ -691,7 +691,7 @@ static void close_files (void)
if (pw_close () == 0) { if (pw_close () == 0) {
fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ()));
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
if (pw_unlock () == 0) { if (pw_unlock () == 0) {
fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ());
@ -706,7 +706,7 @@ static void close_files (void)
_("%s: failure while writing changes to %s\n"), _("%s: failure while writing changes to %s\n"),
Prog, spw_dbname ()); Prog, spw_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ()));
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
if (spw_unlock () == 0) { if (spw_unlock () == 0) {
fprintf (stderr, fprintf (stderr,
@ -723,7 +723,7 @@ static void close_files (void)
_("%s: failure while writing changes to %s\n"), _("%s: failure while writing changes to %s\n"),
Prog, gr_dbname ()); Prog, gr_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ()));
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
if (gr_unlock () == 0) { if (gr_unlock () == 0) {
fprintf (stderr, fprintf (stderr,
@ -741,7 +741,7 @@ static void close_files (void)
_("%s: failure while writing changes to %s\n"), _("%s: failure while writing changes to %s\n"),
Prog, sgr_dbname ()); Prog, sgr_dbname ());
SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ()));
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
if (sgr_unlock () == 0) { if (sgr_unlock () == 0) {
fprintf (stderr, fprintf (stderr,
@ -963,7 +963,7 @@ int main (int argc, char **argv)
if (0 != errors) { if (0 != errors) {
fprintf (stderr, fprintf (stderr,
_("%s: error detected, changes ignored\n"), Prog); _("%s: error detected, changes ignored\n"), Prog);
fail_exit (1); fail_exit (EXIT_FAILURE);
} }
close_files (); close_files ();
@ -971,6 +971,6 @@ int main (int argc, char **argv)
nscd_flush_cache ("passwd"); nscd_flush_cache ("passwd");
nscd_flush_cache ("group"); nscd_flush_cache ("group");
return 0; return EXIT_SUCCESS;
} }