chiark / gitweb /
Add more _printf_'s for format-nonliterals
authorThomas Hindoe Paaboel Andersen <phomes@gmail.com>
Sat, 14 Dec 2013 12:09:07 +0000 (13:09 +0100)
committerThomas Hindoe Paaboel Andersen <phomes@gmail.com>
Sat, 14 Dec 2013 12:32:22 +0000 (13:32 +0100)
Clang is a bit more strict wrt format-nonliterals:
http://clang.llvm.org/docs/LanguageExtensions.html#format-string-checking

Adding these extra printf attributes also makes gcc able to find more
problems. E.g. this patch uncovers a format issue in udev-builtin-path_id.c

Some parts looked intetional about breaking the format-nonliteral check.
I added some supression for warnings there.

13 files changed:
src/core/job.c
src/core/unit.c
src/journal/journal-gatewayd.c
src/journal/microhttpd-util.c
src/libsystemd-bus/bus-error.c
src/libudev/libudev.c
src/test/test-libudev.c
src/udev/accelerometer/accelerometer.c
src/udev/ata_id/ata_id.c
src/udev/cdrom_id/cdrom_id.c
src/udev/scsi_id/scsi_id.c
src/udev/udev-builtin-kmod.c
src/udev/udev-builtin-path_id.c

index ce97263f03d547f4cd8518894c6b0c31f63076bb..491c73d47b47dbfa7a02d6f05f31c254757d3705 100644 (file)
@@ -610,6 +610,8 @@ _pure_ static const char *job_get_status_message_format_try_harder(Unit *u, JobT
         return NULL;
 }
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
 static void job_print_status_message(Unit *u, JobType t, JobResult result) {
         const char *format;
 
@@ -676,6 +678,7 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) {
                         unit_status_printf(u, ANSI_HIGHLIGHT_ON " INFO " ANSI_HIGHLIGHT_OFF, "%s is not active.");
         }
 }
+#pragma GCC diagnostic pop
 
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wformat-nonliteral"
index 6458c7f5707c74a6e9914ed023dcecc8ef3d90cb..160a346d8652a5639d3d3c7dfe6f80c33ba4fc7a 100644 (file)
@@ -1125,6 +1125,8 @@ _pure_ static const char *unit_get_status_message_format_try_harder(Unit *u, Job
         return NULL;
 }
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
 static void unit_status_print_starting_stopping(Unit *u, JobType t) {
         const char *format;
 
@@ -1139,6 +1141,7 @@ static void unit_status_print_starting_stopping(Unit *u, JobType t) {
 
         unit_status_printf(u, "", format);
 }
+#pragma GCC diagnostic pop
 
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wformat-nonliteral"
index 384137b2bd614f573e6227a7c90918a955c1cf23..5c35d8e77ec8a332f76acb83e872970c9010bb23 100644 (file)
@@ -131,6 +131,7 @@ static int respond_oom_internal(struct MHD_Connection *connection) {
 
 #define respond_oom(connection) log_oom(), respond_oom_internal(connection)
 
+_printf_(3,4)
 static int respond_error(
                 struct MHD_Connection *connection,
                 unsigned code,
index 382087c7906bf3daae35e2b08b97fb3651dddf54..5675af4a19068afabcb3852ca3eda2c573fcd055 100644 (file)
@@ -27,6 +27,9 @@
 #include "macro.h"
 #include "util.h"
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+_printf_(2,0)
 void microhttpd_logger(void *arg, const char *fmt, va_list ap) {
         _cleanup_free_ char *f;
         if (asprintf(&f, "microhttpd: %s", fmt) <= 0) {
@@ -35,3 +38,4 @@ void microhttpd_logger(void *arg, const char *fmt, va_list ap) {
         }
         log_metav(LOG_INFO, NULL, 0, NULL, f, ap);
 }
+#pragma GCC diagnostic pop
index 25eaf0eee4961563535afc95b55e1ced63145169..2d1e80dc0609e952687d5d9e55bf6a059acdca89 100644 (file)
@@ -250,6 +250,7 @@ finish:
         return -bus_error_name_to_errno(name);
 }
 
+_printf_(3,0)
 int bus_error_setfv(sd_bus_error *e, const char *name, const char *format, va_list ap) {
 
         if (!name)
@@ -463,6 +464,7 @@ _public_ int sd_bus_error_set_errno(sd_bus_error *e, int error) {
         return -error;
 }
 
+_printf_(3,0)
 int bus_error_set_errnofv(sd_bus_error *e, int error, const char *format, va_list ap) {
         int r;
 
index bc73a5a08c42a1ce3747ea0251c746f0542927c3..e1ba82febf0daaa31cea956f61dd563d31637fea 100644 (file)
@@ -65,6 +65,7 @@ void udev_log(struct udev *udev,
         va_end(args);
 }
 
+_printf_(6,0)
 static void log_stderr(struct udev *udev,
                        int priority, const char *file, int line, const char *fn,
                        const char *format, va_list args)
index 7ed4e14701607a7a43e61f7931b4ead2b7a13e1d..a8c1ff012ac00b9791ef32b1c2b7b66b68975067 100644 (file)
@@ -34,6 +34,7 @@
 
 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
 
+_printf_(6,0)
 static void log_fn(struct udev *udev,
                    int priority, const char *file, int line, const char *fn,
                    const char *format, va_list args) {
index e611b48a4235a3476f960516306ee5db6f57ac09..86966fbd5f214cd16f3a6f686589853518bcae26 100644 (file)
@@ -71,6 +71,7 @@
 
 static int debug = 0;
 
+_printf_(6,0)
 static void log_fn(struct udev *udev, int priority,
                    const char *file, int line, const char *fn,
                    const char *format, va_list args)
index d375d43491bc38069d84bfc2ba56186760e35e46..28e9acb296bf2b628d759a0a5835f9e9d7ebb611 100644 (file)
@@ -405,6 +405,7 @@ out:
         return ret;
 }
 
+_printf_(6,0)
 static void log_fn(struct udev *udev, int priority,
                    const char *file, int line, const char *fn,
                    const char *format, va_list args)
index 1ad045923630aa6b59017986250d4f69850f7cd4..09d2d69755317b4a2bf1547d36a274a78dba7e20 100644 (file)
@@ -39,6 +39,7 @@
 
 static bool debug;
 
+_printf_(6,0)
 static void log_fn(struct udev *udev, int priority,
                    const char *file, int line, const char *fn,
                    const char *format, va_list args)
index c2cc2ea48dbf6dfbd9f1a67230afec1efcb2280f..ae36b9e3569bf57c7c0ad23aebf060a694da9e80 100644 (file)
@@ -67,6 +67,7 @@ static char model_enc_str[256];
 static char revision_str[16];
 static char type_str[16];
 
+_printf_(6,0)
 static void log_fn(struct udev *udev, int priority,
                    const char *file, int line, const char *fn,
                    const char *format, va_list args)
index fc28121267037a007de08195735c730ddc3d55dc..63dbf30727249394a207899c979298dee76a0f39 100644 (file)
@@ -64,6 +64,7 @@ static int load_module(struct udev *udev, const char *alias)
         return err;
 }
 
+_printf_(6,0)
 static void udev_kmod_log(void *data, int priority, const char *file, int line,
                           const char *fn, const char *format, va_list args)
 {
index 763f3c3113be024ec72c0d18011b09ca4b320be3..74763301964d5bb3d2ab3c00cffd85cb9ed1b842 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "udev.h"
 
+_printf_(2,3)
 static int path_prepend(char **path, const char *fmt, ...)
 {
         va_list va;