* src/lastlog.c: Use EXIT_FAILURE / EXIT_SUCCESS for exit()
* src/lastlog.c: Added splint annotations. * src/lastlog.c: Avoid global pwent. * src/lastlog.c: Cast ID to ulongs and use ulong formats for IDs. * src/lastlog.c: Avoid assignment in comparisons. * src/lastlog.c: Ignore fclose() return value since the file is only opened for reading.
This commit is contained in:
		
							
								
								
									
										10
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								ChangeLog
									
									
									
									
									
								
							@@ -1,3 +1,13 @@
 | 
			
		||||
2009-04-22  Nicolas François  <nicolas.francois@centraliens.net>
 | 
			
		||||
 | 
			
		||||
	* src/lastlog.c: Use EXIT_FAILURE / EXIT_SUCCESS for exit()
 | 
			
		||||
	* src/lastlog.c: Added splint annotations.
 | 
			
		||||
	* src/lastlog.c: Avoid global pwent.
 | 
			
		||||
	* src/lastlog.c: Cast ID to ulongs and use ulong formats for IDs.
 | 
			
		||||
	* src/lastlog.c: Avoid assignment in comparisons.
 | 
			
		||||
	* src/lastlog.c: Ignore fclose() return value since the file is
 | 
			
		||||
	only opened for reading.
 | 
			
		||||
 | 
			
		||||
2009-04-22  Nicolas François  <nicolas.francois@centraliens.net>
 | 
			
		||||
 | 
			
		||||
	* src/newgrp.c: Added assertion to guide splint (and me).
 | 
			
		||||
 
 | 
			
		||||
@@ -70,7 +70,6 @@ static struct stat statbuf;	/* fstat buffer for file size */
 | 
			
		||||
static bool uflg = false;	/* print only an user of range of users */
 | 
			
		||||
static bool tflg = false;	/* print is restricted to most recent days */
 | 
			
		||||
static bool bflg = false;	/* print excludes most recent days */
 | 
			
		||||
static struct passwd *pwent;
 | 
			
		||||
 | 
			
		||||
#define	NOW	(time ((time_t *) 0))
 | 
			
		||||
 | 
			
		||||
@@ -84,10 +83,10 @@ static void usage (void)
 | 
			
		||||
	         "  -t, --time DAYS               print only lastlog records more recent than DAYS\n"
 | 
			
		||||
	         "  -u, --user LOGIN              print lastlog record of the specified LOGIN\n"
 | 
			
		||||
	         "\n"), stderr);
 | 
			
		||||
	exit (1);
 | 
			
		||||
	exit (EXIT_FAILURE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void print_one (const struct passwd *pw)
 | 
			
		||||
static void print_one (/*@null@*/const struct passwd *pw)
 | 
			
		||||
{
 | 
			
		||||
	static bool once = false;
 | 
			
		||||
	char *cp;
 | 
			
		||||
@@ -116,9 +115,9 @@ static void print_one (const struct passwd *pw)
 | 
			
		||||
		 */
 | 
			
		||||
		if (fread ((char *) &ll, sizeof (ll), 1, lastlogfile) != 1) {
 | 
			
		||||
			fprintf (stderr,
 | 
			
		||||
			         _("lastlog: Failed to get the entry for UID %d\n"),
 | 
			
		||||
			         pw->pw_uid);
 | 
			
		||||
			exit (1);
 | 
			
		||||
			         _("lastlog: Failed to get the entry for UID %lu\n"),
 | 
			
		||||
			         (unsigned long int)pw->pw_uid);
 | 
			
		||||
			exit (EXIT_FAILURE);
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		/* Outsize of the lastlog file.
 | 
			
		||||
@@ -173,6 +172,7 @@ static void print_one (const struct passwd *pw)
 | 
			
		||||
 | 
			
		||||
static void print (void)
 | 
			
		||||
{
 | 
			
		||||
	const struct passwd *pwent;
 | 
			
		||||
	if (uflg && has_umin && has_umax && (umin == umax)) {
 | 
			
		||||
		print_one (getpwuid ((uid_t)umin));
 | 
			
		||||
	} else {
 | 
			
		||||
@@ -222,6 +222,8 @@ int main (int argc, char **argv)
 | 
			
		||||
				bflg = true;
 | 
			
		||||
				break;
 | 
			
		||||
			case 'u':
 | 
			
		||||
			{
 | 
			
		||||
				const struct passwd *pwent;
 | 
			
		||||
				/*
 | 
			
		||||
				 * The user can be:
 | 
			
		||||
				 *  - a login name
 | 
			
		||||
@@ -244,10 +246,11 @@ int main (int argc, char **argv)
 | 
			
		||||
						fprintf (stderr,
 | 
			
		||||
						         _("lastlog: Unknown user or range: %s\n"),
 | 
			
		||||
						         optarg);
 | 
			
		||||
						exit (1);
 | 
			
		||||
						exit (EXIT_FAILURE);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			default:
 | 
			
		||||
				usage ();
 | 
			
		||||
				break;
 | 
			
		||||
@@ -261,9 +264,10 @@ int main (int argc, char **argv)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ((lastlogfile = fopen (LASTLOG_FILE, "r")) == (FILE *) 0) {
 | 
			
		||||
	lastlogfile = fopen (LASTLOG_FILE, "r");
 | 
			
		||||
	if (NULL == lastlogfile) {
 | 
			
		||||
		perror (LASTLOG_FILE);
 | 
			
		||||
		exit (1);
 | 
			
		||||
		exit (EXIT_FAILURE);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Get the lastlog size */
 | 
			
		||||
@@ -271,12 +275,12 @@ int main (int argc, char **argv)
 | 
			
		||||
		fprintf (stderr,
 | 
			
		||||
		         _("lastlog: Cannot get the size of %s: %s\n"),
 | 
			
		||||
		         LASTLOG_FILE, strerror (errno));
 | 
			
		||||
		exit (1);
 | 
			
		||||
		exit (EXIT_FAILURE);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	print ();
 | 
			
		||||
 | 
			
		||||
	fclose (lastlogfile);
 | 
			
		||||
	exit (0);
 | 
			
		||||
	(void) fclose (lastlogfile);
 | 
			
		||||
	exit (EXIT_SUCCESS);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user