summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Hindoe Paaboel Andersen <phomes@gmail.com>2013-12-14 13:09:07 +0100
committerThomas Hindoe Paaboel Andersen <phomes@gmail.com>2013-12-14 13:32:22 +0100
commit9091e686f43184065381aa71929e3df36a4ea2e1 (patch)
tree37fe0c888a655bcf2d976411f21c068c300abbae
parent8d35dae708ffbb88f1b023964913d3d53d4a7418 (diff)
Add more _printf_'s for format-nonliterals
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.
-rw-r--r--src/core/job.c3
-rw-r--r--src/core/unit.c3
-rw-r--r--src/journal/journal-gatewayd.c1
-rw-r--r--src/journal/microhttpd-util.c4
-rw-r--r--src/libsystemd-bus/bus-error.c2
-rw-r--r--src/libudev/libudev.c1
-rw-r--r--src/test/test-libudev.c1
-rw-r--r--src/udev/accelerometer/accelerometer.c1
-rw-r--r--src/udev/ata_id/ata_id.c1
-rw-r--r--src/udev/cdrom_id/cdrom_id.c1
-rw-r--r--src/udev/scsi_id/scsi_id.c1
-rw-r--r--src/udev/udev-builtin-kmod.c1
-rw-r--r--src/udev/udev-builtin-path_id.c1
13 files changed, 21 insertions, 0 deletions
diff --git a/src/core/job.c b/src/core/job.c
index ce97263f0..491c73d47 100644
--- a/src/core/job.c
+++ b/src/core/job.c
@@ -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"
diff --git a/src/core/unit.c b/src/core/unit.c
index 6458c7f57..160a346d8 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -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"
diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c
index 384137b2b..5c35d8e77 100644
--- a/src/journal/journal-gatewayd.c
+++ b/src/journal/journal-gatewayd.c
@@ -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,
diff --git a/src/journal/microhttpd-util.c b/src/journal/microhttpd-util.c
index 382087c79..5675af4a1 100644
--- a/src/journal/microhttpd-util.c
+++ b/src/journal/microhttpd-util.c
@@ -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
diff --git a/src/libsystemd-bus/bus-error.c b/src/libsystemd-bus/bus-error.c
index 25eaf0eee..2d1e80dc0 100644
--- a/src/libsystemd-bus/bus-error.c
+++ b/src/libsystemd-bus/bus-error.c
@@ -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;
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
index bc73a5a08..e1ba82feb 100644
--- a/src/libudev/libudev.c
+++ b/src/libudev/libudev.c
@@ -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)
diff --git a/src/test/test-libudev.c b/src/test/test-libudev.c
index 7ed4e1470..a8c1ff012 100644
--- a/src/test/test-libudev.c
+++ b/src/test/test-libudev.c
@@ -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) {
diff --git a/src/udev/accelerometer/accelerometer.c b/src/udev/accelerometer/accelerometer.c
index e611b48a4..86966fbd5 100644
--- a/src/udev/accelerometer/accelerometer.c
+++ b/src/udev/accelerometer/accelerometer.c
@@ -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)
diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c
index d375d4349..28e9acb29 100644
--- a/src/udev/ata_id/ata_id.c
+++ b/src/udev/ata_id/ata_id.c
@@ -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)
diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c
index 1ad045923..09d2d6975 100644
--- a/src/udev/cdrom_id/cdrom_id.c
+++ b/src/udev/cdrom_id/cdrom_id.c
@@ -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)
diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c
index c2cc2ea48..ae36b9e35 100644
--- a/src/udev/scsi_id/scsi_id.c
+++ b/src/udev/scsi_id/scsi_id.c
@@ -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)
diff --git a/src/udev/udev-builtin-kmod.c b/src/udev/udev-builtin-kmod.c
index fc2812126..63dbf3072 100644
--- a/src/udev/udev-builtin-kmod.c
+++ b/src/udev/udev-builtin-kmod.c
@@ -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)
{
diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
index 763f3c311..747633019 100644
--- a/src/udev/udev-builtin-path_id.c
+++ b/src/udev/udev-builtin-path_id.c
@@ -32,6 +32,7 @@
#include "udev.h"
+_printf_(2,3)
static int path_prepend(char **path, const char *fmt, ...)
{
va_list va;