diff --git a/lib/defines.h b/lib/defines.h index 55b42bee..4a2b90c9 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -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 ! */ diff --git a/lib/selinux.c b/lib/selinux.c index f97b1fe5..ad639bd3 100644 --- a/lib/selinux.c +++ b/lib/selinux.c @@ -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; diff --git a/lib/semanage.c b/lib/semanage.c index 12401608..54f99623 100644 --- a/lib/semanage.c +++ b/lib/semanage.c @@ -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, ...) diff --git a/libmisc/copydir.c b/libmisc/copydir.c index a5f1b3da..2929151d 100644 --- a/libmisc/copydir.c +++ b/libmisc/copydir.c @@ -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(); diff --git a/src/chage.c b/src/chage.c index ced3a3e8..8cf67794 100644 --- a/src/chage.c +++ b/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); } }