Use function format attribute where applicable
Allow the compiler to verify the format string against the supplied
arguments.
    chage.c:239:51: warning: format not a string literal, format string not checked [-Wformat-nonliteral]
      239 |                 (void) strftime (buf, sizeof buf, format, tp);
          |                                                   ^~~~~~
			
			
This commit is contained in:
		
				
					committed by
					
						
						Serge Hallyn
					
				
			
			
				
	
			
			
			
						parent
						
							477c8e6f42
						
					
				
				
					commit
					c6c8130db4
				
			@@ -320,8 +320,10 @@ extern char *strerror ();
 | 
			
		||||
/* To be used for verified unused parameters */
 | 
			
		||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 | 
			
		||||
# define unused __attribute__((unused))
 | 
			
		||||
# define format_attr(type, index, check) __attribute__((format (type, index, check)))
 | 
			
		||||
#else
 | 
			
		||||
# define unused
 | 
			
		||||
# define format_attr(type, index, check)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* ! Arguments evaluated twice ! */
 | 
			
		||||
 
 | 
			
		||||
@@ -109,7 +109,7 @@ int reset_selinux_file_context (void)
 | 
			
		||||
/*
 | 
			
		||||
 *  Log callback for libselinux internal error reporting.
 | 
			
		||||
 */
 | 
			
		||||
__attribute__((__format__ (printf, 2, 3)))
 | 
			
		||||
format_attr(printf, 2, 3)
 | 
			
		||||
static int selinux_log_cb (int type, const char *fmt, ...) {
 | 
			
		||||
	va_list ap;
 | 
			
		||||
	char *buf;
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,7 @@
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
format_attr(printf, 3, 4)
 | 
			
		||||
static void semanage_error_callback (unused void *varg,
 | 
			
		||||
                                     semanage_handle_t *handle,
 | 
			
		||||
                                     const char *fmt, ...)
 | 
			
		||||
 
 | 
			
		||||
@@ -91,7 +91,8 @@ static int fchown_if_needed (int fdst, const struct stat *statp,
 | 
			
		||||
/*
 | 
			
		||||
 * error_acl - format the error messages for the ACL and EQ libraries.
 | 
			
		||||
 */
 | 
			
		||||
static void error_acl (struct error_context *ctx, const char *fmt, ...)
 | 
			
		||||
format_attr(printf, 2, 3)
 | 
			
		||||
static void error_acl (unused struct error_context *ctx, const char *fmt, ...)
 | 
			
		||||
{
 | 
			
		||||
	va_list ap;
 | 
			
		||||
	FILE *shadow_logfd = log_get_logfd();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								src/chage.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/chage.c
									
									
									
									
									
								
							@@ -223,20 +223,12 @@ static void print_date (time_t date)
 | 
			
		||||
{
 | 
			
		||||
	struct tm *tp;
 | 
			
		||||
	char buf[80];
 | 
			
		||||
	char format[80];
 | 
			
		||||
 | 
			
		||||
	if (iflg) {
 | 
			
		||||
		(void) snprintf (format, 80, "%%Y-%%m-%%d");
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
		(void) snprintf (format, 80, "%%b %%d, %%Y");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tp = gmtime (&date);
 | 
			
		||||
	if (NULL == tp) {
 | 
			
		||||
		(void) printf ("time_t: %lu\n", (unsigned long)date);
 | 
			
		||||
	} else {
 | 
			
		||||
		(void) strftime (buf, sizeof buf, format, tp);
 | 
			
		||||
		(void) strftime (buf, sizeof buf, iflg ? "%%Y-%%m-%%d" : "%%b %%d, %%Y", tp);
 | 
			
		||||
		(void) puts (buf);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user