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:
parent
477c8e6f42
commit
c6c8130db4
@ -320,8 +320,10 @@ extern char *strerror ();
|
|||||||
/* To be used for verified unused parameters */
|
/* To be used for verified unused parameters */
|
||||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
|
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
|
||||||
# define unused __attribute__((unused))
|
# define unused __attribute__((unused))
|
||||||
|
# define format_attr(type, index, check) __attribute__((format (type, index, check)))
|
||||||
#else
|
#else
|
||||||
# define unused
|
# define unused
|
||||||
|
# define format_attr(type, index, check)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ! Arguments evaluated twice ! */
|
/* ! Arguments evaluated twice ! */
|
||||||
|
@ -109,7 +109,7 @@ int reset_selinux_file_context (void)
|
|||||||
/*
|
/*
|
||||||
* Log callback for libselinux internal error reporting.
|
* 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, ...) {
|
static int selinux_log_cb (int type, const char *fmt, ...) {
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
format_attr(printf, 3, 4)
|
||||||
static void semanage_error_callback (unused void *varg,
|
static void semanage_error_callback (unused void *varg,
|
||||||
semanage_handle_t *handle,
|
semanage_handle_t *handle,
|
||||||
const char *fmt, ...)
|
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.
|
* 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;
|
va_list ap;
|
||||||
FILE *shadow_logfd = log_get_logfd();
|
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;
|
struct tm *tp;
|
||||||
char buf[80];
|
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);
|
tp = gmtime (&date);
|
||||||
if (NULL == tp) {
|
if (NULL == tp) {
|
||||||
(void) printf ("time_t: %lu\n", (unsigned long)date);
|
(void) printf ("time_t: %lu\n", (unsigned long)date);
|
||||||
} else {
|
} else {
|
||||||
(void) strftime (buf, sizeof buf, format, tp);
|
(void) strftime (buf, sizeof buf, iflg ? "%%Y-%%m-%%d" : "%%b %%d, %%Y", tp);
|
||||||
(void) puts (buf);
|
(void) puts (buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user