aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libpam/include/pam_cc_compat.h20
-rw-r--r--libpam/pam_handlers.c6
-rw-r--r--m4/warn_lang_flags.m41
3 files changed, 21 insertions, 6 deletions
diff --git a/libpam/include/pam_cc_compat.h b/libpam/include/pam_cc_compat.h
index 69190368..0a6e32d5 100644
--- a/libpam/include/pam_cc_compat.h
+++ b/libpam/include/pam_cc_compat.h
@@ -32,6 +32,11 @@
_Pragma("GCC diagnostic ignored \"-Wcast-align\"")
# define DIAG_POP_IGNORE_CAST_ALIGN \
_Pragma("GCC diagnostic pop")
+# define DIAG_PUSH_IGNORE_FORMAT_NONLITERAL \
+ _Pragma("GCC diagnostic push"); \
+ _Pragma("GCC diagnostic ignored \"-Wformat-nonliteral\"")
+# define DIAG_POP_IGNORE_FORMAT_NONLITERAL \
+ _Pragma("GCC diagnostic pop")
#elif PAM_CLANG_PREREQ(2, 6)
# define DIAG_PUSH_IGNORE_CAST_QUAL \
_Pragma("clang diagnostic push"); \
@@ -43,11 +48,18 @@
_Pragma("clang diagnostic ignored \"-Wcast-align\"")
# define DIAG_POP_IGNORE_CAST_ALIGN \
_Pragma("clang diagnostic pop")
+# define DIAG_PUSH_IGNORE_FORMAT_NONLITERAL \
+ _Pragma("clang diagnostic push"); \
+ _Pragma("clang diagnostic ignored \"-Wformat-nonliteral\"")
+# define DIAG_POP_IGNORE_FORMAT_NONLITERAL \
+ _Pragma("clang diagnostic pop")
#else
-# define DIAG_PUSH_IGNORE_CAST_QUAL /* empty */
-# define DIAG_POP_IGNORE_CAST_QUAL /* empty */
-# define DIAG_PUSH_IGNORE_CAST_ALIGN /* empty */
-# define DIAG_POP_IGNORE_CAST_ALIGN /* empty */
+# define DIAG_PUSH_IGNORE_CAST_QUAL /* empty */
+# define DIAG_POP_IGNORE_CAST_QUAL /* empty */
+# define DIAG_PUSH_IGNORE_CAST_ALIGN /* empty */
+# define DIAG_POP_IGNORE_CAST_ALIGN /* empty */
+# define DIAG_PUSH_IGNORE_FORMAT_NONLITERAL /* empty */
+# define DIAG_POP_IGNORE_FORMAT_NONLITERAL /* empty */
#endif
/*
diff --git a/libpam/pam_handlers.c b/libpam/pam_handlers.c
index 12ebb8fc..6629480e 100644
--- a/libpam/pam_handlers.c
+++ b/libpam/pam_handlers.c
@@ -281,7 +281,7 @@ _pam_open_config_file(pam_handle_t *pamh
, char **path
, FILE **file)
{
- const char *pamd_dirs[] = { PAM_CONFIG_DF, PAM_CONFIG_DIST_DF
+ const char *const pamd_dirs[] = { PAM_CONFIG_DF, PAM_CONFIG_DIST_DF
#ifdef VENDORDIR
, PAM_CONFIG_DIST2_DF
#endif
@@ -317,10 +317,12 @@ _pam_open_config_file(pam_handle_t *pamh
}
for (i = 0; i < PAM_ARRAY_SIZE(pamd_dirs); i++) {
- if (asprintf (&p, pamd_dirs[i], service) < 0) {
+ DIAG_PUSH_IGNORE_FORMAT_NONLITERAL
+ if (asprintf (&p, pamd_dirs[i], service) < 0) {
pam_syslog(pamh, LOG_CRIT, "asprintf failed");
return PAM_BUF_ERR;
}
+ DIAG_POP_IGNORE_FORMAT_NONLITERAL
D(("opening %s", p));
f = fopen(p, "r");
diff --git a/m4/warn_lang_flags.m4 b/m4/warn_lang_flags.m4
index 3ae03274..a4d6022f 100644
--- a/m4/warn_lang_flags.m4
+++ b/m4/warn_lang_flags.m4
@@ -8,6 +8,7 @@ gl_WARN_ADD([-Wcast-align])
gl_WARN_ADD([-Wcast-align=strict])
gl_WARN_ADD([-Wcast-qual])
gl_WARN_ADD([-Wdeprecated])
+gl_WARN_ADD([-Wformat=2])
gl_WARN_ADD([-Winit-self])
gl_WARN_ADD([-Winline])
gl_WARN_ADD([-Wmain])