* 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:
		
							
								
								
									
										14
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -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> | ||||
|  | ||||
| 	* NEWS, src/chpasswd.c: Added support for changing the passwords | ||||
|   | ||||
| @@ -53,7 +53,7 @@ char *pw_encrypt (const char *clear, const char *salt) | ||||
| 		 * expect us to return NULL, so... | ||||
| 		 */ | ||||
| 		perror ("crypt"); | ||||
| 		exit (1); | ||||
| 		exit (EXIT_FAILURE); | ||||
| 	} | ||||
|  | ||||
| 	/* 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, | ||||
| 			 _("crypt method not supported by libcrypt? (%s)\n"), | ||||
| 			  method); | ||||
| 		exit (1); | ||||
| 		exit (EXIT_FAILURE); | ||||
| 	} | ||||
|  | ||||
| 	if (strlen (cp) != 13) | ||||
| 	if (strlen (cp) != 13) { | ||||
| 		return cp;	/* nonstandard crypt() in libc, better bail out */ | ||||
| 	} | ||||
|  | ||||
| 	strcpy (cipher, cp); | ||||
|  | ||||
| 	return cipher; | ||||
|   | ||||
| @@ -32,7 +32,12 @@ | ||||
| /* | ||||
|  * 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_USAGE         	2	/* invalid command syntax */ | ||||
| #define E_BAD_ARG       	3	/* invalid argument to option */ | ||||
|   | ||||
| @@ -53,12 +53,14 @@ void audit_help_open (void) | ||||
| 	if (audit_fd < 0) { | ||||
| 		/* You get these only when the kernel doesn't have | ||||
| 		 * audit compiled in. */ | ||||
| 		if (errno == EINVAL || errno == EPROTONOSUPPORT || | ||||
| 		    errno == EAFNOSUPPORT) | ||||
| 		if (   (errno == EINVAL) | ||||
| 		    || (errno == EPROTONOSUPPORT) | ||||
| 		    || (errno == EAFNOSUPPORT)) { | ||||
| 			return; | ||||
| 		fprintf (stderr, | ||||
| 		         _("Cannot open audit interface - aborting.\n")); | ||||
| 		exit (1); | ||||
| 		} | ||||
| 		(void) fputs (_("Cannot open audit interface - aborting.\n"), | ||||
| 		              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. | ||||
|  * id  -  uid or gid that the operation is being performed on. This is used | ||||
|  *	  only when user is NULL. | ||||
|  * result - 1 is "success" and 0 is "failed" | ||||
|  */ | ||||
| void audit_logger (int type, const char *pgname, const char *op, | ||||
|                    const char *name, unsigned int id, | ||||
|   | ||||
| @@ -83,7 +83,7 @@ void chown_tty (const struct passwd *info) | ||||
| 		         info->pw_name, strerror (err))); | ||||
| 		if (EROFS != err) { | ||||
| 			closelog (); | ||||
| 			exit (1); | ||||
| 			exit (EXIT_FAILURE); | ||||
| 		} | ||||
| 	} | ||||
| #ifdef __linux__ | ||||
|   | ||||
| @@ -436,7 +436,7 @@ void setup_limits (const struct passwd *info) | ||||
| 			    LOGIN_ERROR_LOGIN) { | ||||
| 				(void) fputs (_("Too many logins.\n"), stderr); | ||||
| 				(void) sleep (2); /* XXX: Should be FAIL_DELAY */ | ||||
| 				exit (1); | ||||
| 				exit (EXIT_FAILURE); | ||||
| 			} | ||||
| 		} | ||||
| #endif | ||||
|   | ||||
| @@ -114,7 +114,7 @@ static void get_remote_string (char *buf, size_t size) | ||||
| { | ||||
| 	for (;;) { | ||||
| 		if (read (0, buf, 1) != 1) { | ||||
| 			exit (1); | ||||
| 			exit (EXIT_FAILURE); | ||||
| 		} | ||||
| 		if ('\0' == *buf) { | ||||
| 			return; | ||||
|   | ||||
| @@ -58,7 +58,7 @@ void subsystem (const struct passwd *pw) | ||||
| 		printf (_("Invalid root directory '%s'\n"), pw->pw_dir); | ||||
| 		SYSLOG ((LOG_WARN, BAD_SUBROOT2, pw->pw_dir, pw->pw_name)); | ||||
| 		closelog (); | ||||
| 		exit (1); | ||||
| 		exit (EXIT_FAILURE); | ||||
| 	} | ||||
|  | ||||
| 	/* | ||||
| @@ -71,6 +71,6 @@ void subsystem (const struct passwd *pw) | ||||
| 			pw->pw_dir); | ||||
| 		SYSLOG ((LOG_WARN, NO_SUBROOT2, pw->pw_dir, pw->pw_name)); | ||||
| 		closelog (); | ||||
| 		exit (1); | ||||
| 		exit (EXIT_FAILURE); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -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", | ||||
| 		         oldgid)); | ||||
| 		/* Do not return if the group permission were raised. */ | ||||
| 		exit (1); | ||||
| 		exit (EXIT_FAILURE); | ||||
| 	} | ||||
| 	if (fp == (FILE *) 0) { | ||||
| 		return;		/* can't open or create logfile */ | ||||
|   | ||||
| @@ -51,8 +51,11 @@ int safe_system (const char *command, | ||||
| 	} | ||||
|  | ||||
| 	if (pid) {       /* Parent */ | ||||
| 		waitpid (pid, &status, 0); | ||||
| 		return status; | ||||
| 		if (waitpid (pid, &status, 0) > 0) { | ||||
| 			return status; | ||||
| 		} else { | ||||
| 			return -1; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	fd = open ("/dev/null", O_RDWR); | ||||
| @@ -64,6 +67,6 @@ int safe_system (const char *command, | ||||
|  | ||||
| 	execve (command, (char *const *) argv, (char *const *) env); | ||||
| 	fprintf (stderr, _("Failed to exec '%s'\n"), argv[0]); | ||||
| 	exit (-1); | ||||
| 	exit (EXIT_FAILURE); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -64,7 +64,7 @@ static void print_groups (const char *member) | ||||
| 	if (NULL == pwd) { | ||||
| 		(void) fprintf (stderr, _("%s: unknown user %s\n"), | ||||
| 		                Prog, member); | ||||
| 		exit (1); | ||||
| 		exit (EXIT_FAILURE); | ||||
| 	} | ||||
|  | ||||
| 	setgrent (); | ||||
| @@ -146,7 +146,7 @@ int main (int argc, char **argv) | ||||
| 		ngroups = getgroups (sys_ngroups, groups); | ||||
| 		if (ngroups < 0) { | ||||
| 			perror ("getgroups"); | ||||
| 			exit (1); | ||||
| 			exit (EXIT_FAILURE); | ||||
| 		} | ||||
|  | ||||
| 		/* | ||||
| @@ -203,7 +203,7 @@ int main (int argc, char **argv) | ||||
| 		if (NULL != logname) { | ||||
| 			print_groups (logname); | ||||
| 		} else { | ||||
| 			exit (1); | ||||
| 			exit (EXIT_FAILURE); | ||||
| 		} | ||||
| #endif | ||||
| 	} else { | ||||
| @@ -214,6 +214,6 @@ int main (int argc, char **argv) | ||||
| 		 */ | ||||
| 		print_groups (argv[1]); | ||||
| 	} | ||||
| 	exit (0); | ||||
| 	return EXIT_SUCCESS; | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										6
									
								
								src/id.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								src/id.c
									
									
									
									
									
								
							| @@ -57,7 +57,7 @@ static void usage (void) | ||||
| #else | ||||
| 	(void) fputs (_("Usage: id\n"), stderr); | ||||
| #endif | ||||
| 	exit (1); | ||||
| 	exit (EXIT_FAILURE); | ||||
| } | ||||
|  | ||||
|  /*ARGSUSED*/ int main (int argc, char **argv) | ||||
| @@ -201,7 +201,7 @@ static void usage (void) | ||||
| 	 * Finish off the line. | ||||
| 	 */ | ||||
| 	(void) putchar ('\n'); | ||||
| 	exit (0); | ||||
| 	/* NOT REACHED */ | ||||
|  | ||||
| 	return EXIT_SUCCESS; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -175,11 +175,11 @@ int main (int argc, char **argv) | ||||
| 	pid = fork (); | ||||
| 	if (pid > 0) { | ||||
| 		/* parent */ | ||||
| 		exit (0); | ||||
| 		exit (EXIT_SUCCESS); | ||||
| 	} else if (pid < 0) { | ||||
| 		/* error */ | ||||
| 		perror ("fork"); | ||||
| 		exit (1); | ||||
| 		exit (EXIT_FAILURE); | ||||
| 	} | ||||
| #endif				/* !DEBUG */ | ||||
|  | ||||
| @@ -276,7 +276,7 @@ int main (int argc, char **argv) | ||||
| 			/* | ||||
| 			 * This child has done all it can, drop dead. | ||||
| 			 */ | ||||
| 			exit (0); | ||||
| 			exit (EXIT_SUCCESS); | ||||
| 		} | ||||
|  | ||||
| #ifdef USE_UTMPX | ||||
| @@ -293,7 +293,7 @@ int main (int argc, char **argv) | ||||
| 		 */ | ||||
| 		while (wait (&status) != -1); | ||||
| 	} | ||||
| 	return 1; | ||||
| 	/* NOT REACHED */ | ||||
|  | ||||
| 	return EXIT_FAILURE; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -126,7 +126,7 @@ static void usage (void) | ||||
| 	                   "                                crypt algorithms\n") | ||||
| #endif | ||||
| 	                 ); | ||||
| 	exit (1); | ||||
| 	exit (EXIT_FAILURE); | ||||
| } | ||||
|  | ||||
| /* | ||||
| @@ -529,7 +529,7 @@ static void process_flags (int argc, char **argv) | ||||
| 			char buf[BUFSIZ]; | ||||
| 			snprintf (buf, sizeof buf, "%s: %s", Prog, argv[1]); | ||||
| 			perror (buf); | ||||
| 			fail_exit (1); | ||||
| 			fail_exit (EXIT_FAILURE); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -593,7 +593,7 @@ static void check_perms (void) | ||||
| 		fprintf (stderr, | ||||
| 		         _("%s: Cannot determine your user name.\n"), | ||||
| 		         Prog); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
|  | ||||
| 	retval = pam_start ("newusers", pampw->pw_name, &conv, &pamh); | ||||
| @@ -611,7 +611,7 @@ static void check_perms (void) | ||||
| 	} | ||||
| 	if (PAM_SUCCESS != retval) { | ||||
| 		fprintf (stderr, _("%s: PAM authentication failed\n"), Prog); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
| #endif				/* USE_PAM */ | ||||
| #endif				/* ACCT_TOOLS_SETUID */ | ||||
| @@ -632,7 +632,7 @@ static void open_files (void) | ||||
| 		fprintf (stderr, | ||||
| 		         _("%s: cannot lock %s; try again later.\n"), | ||||
| 		         Prog, pw_dbname ()); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
| 	pw_locked = true; | ||||
| 	if (is_shadow) { | ||||
| @@ -640,7 +640,7 @@ static void open_files (void) | ||||
| 			fprintf (stderr, | ||||
| 			         _("%s: cannot lock %s; try again later.\n"), | ||||
| 			         Prog, spw_dbname ()); | ||||
| 			fail_exit (1); | ||||
| 			fail_exit (EXIT_FAILURE); | ||||
| 		} | ||||
| 		spw_locked = true; | ||||
| 	} | ||||
| @@ -648,7 +648,7 @@ static void open_files (void) | ||||
| 		fprintf (stderr, | ||||
| 		         _("%s: cannot lock %s; try again later.\n"), | ||||
| 		         Prog, gr_dbname ()); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
| 	gr_locked = true; | ||||
| #ifdef SHADOWGRP | ||||
| @@ -657,7 +657,7 @@ static void open_files (void) | ||||
| 			fprintf (stderr, | ||||
| 			         _("%s: cannot lock %s; try again later.\n"), | ||||
| 			         Prog, sgr_dbname ()); | ||||
| 			fail_exit (1); | ||||
| 			fail_exit (EXIT_FAILURE); | ||||
| 		} | ||||
| 		sgr_locked = true; | ||||
| 	} | ||||
| @@ -665,20 +665,20 @@ static void open_files (void) | ||||
|  | ||||
| 	if (pw_open (O_RDWR) == 0) { | ||||
| 		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)) { | ||||
| 		fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
| 	if (gr_open (O_RDWR) == 0) { | ||||
| 		fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
| #ifdef SHADOWGRP | ||||
| 	if (is_shadow_grp && (sgr_open (O_RDWR) == 0)) { | ||||
| 		fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
| #endif | ||||
| } | ||||
| @@ -691,7 +691,7 @@ static void close_files (void) | ||||
| 	if (pw_close () == 0) { | ||||
| 		fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); | ||||
| 		SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
| 	if (pw_unlock () == 0) { | ||||
| 		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"), | ||||
| 			         Prog, spw_dbname ()); | ||||
| 			SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); | ||||
| 			fail_exit (1); | ||||
| 			fail_exit (EXIT_FAILURE); | ||||
| 		} | ||||
| 		if (spw_unlock () == 0) { | ||||
| 			fprintf (stderr, | ||||
| @@ -723,7 +723,7 @@ static void close_files (void) | ||||
| 		         _("%s: failure while writing changes to %s\n"), | ||||
| 		         Prog, gr_dbname ()); | ||||
| 		SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
| 	if (gr_unlock () == 0) { | ||||
| 		fprintf (stderr, | ||||
| @@ -741,7 +741,7 @@ static void close_files (void) | ||||
| 			         _("%s: failure while writing changes to %s\n"), | ||||
| 			         Prog, sgr_dbname ()); | ||||
| 			SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); | ||||
| 			fail_exit (1); | ||||
| 			fail_exit (EXIT_FAILURE); | ||||
| 		} | ||||
| 		if (sgr_unlock () == 0) { | ||||
| 			fprintf (stderr, | ||||
| @@ -963,7 +963,7 @@ int main (int argc, char **argv) | ||||
| 	if (0 != errors) { | ||||
| 		fprintf (stderr, | ||||
| 		         _("%s: error detected, changes ignored\n"), Prog); | ||||
| 		fail_exit (1); | ||||
| 		fail_exit (EXIT_FAILURE); | ||||
| 	} | ||||
|  | ||||
| 	close_files (); | ||||
| @@ -971,6 +971,6 @@ int main (int argc, char **argv) | ||||
| 	nscd_flush_cache ("passwd"); | ||||
| 	nscd_flush_cache ("group"); | ||||
|  | ||||
| 	return 0; | ||||
| 	return EXIT_SUCCESS; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user