I first noticed that "make syntax-check" failed. Then I saw that virAsprintf's prototype lacked ATTRIBUTE_FORMAT. This fixes both and updates HACKING. >From 5bae37c505738ed4223625f8e3cc88ad6f4bf68c Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@xxxxxxxxxx> Date: Wed, 17 Dec 2008 08:54:46 +0100 Subject: [PATCH] let gcc's -Wformat do its job; avoid "make syntax-check" failure * src/util.c (virAsprintf): Remove trailing space. * src/util.h (virAsprintf): Use ATTRIBUTE_FORMAT. * HACKING (Printf-style functions): New section. --- HACKING | 16 ++++++++++++++++ src/util.c | 2 +- src/util.h | 3 ++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/HACKING b/HACKING index 3945833..e088da8 100644 --- a/HACKING +++ b/HACKING @@ -247,6 +247,22 @@ are some special reasons why you cannot include these files explicitly. +Printf-style functions +====================== + +Whenever you add a new printf-style function, i.e., one with a format +string argument and following "..." in its prototype, be sure to use +gcc's printf attribute directive in the prototype. For example, here's +the one for virAsprintf, in util.h: + + int virAsprintf(char **strp, const char *fmt, ...) + ATTRIBUTE_FORMAT(printf, 2, 3); + +This makes it so gcc's -Wformat and -Wformat-security options can do +their jobs and cross-check format strings with the number and types +of arguments. + + Libvirt commiters guidelines ============================ diff --git a/src/util.c b/src/util.c index 12097d4..9eda378 100644 --- a/src/util.c +++ b/src/util.c @@ -1158,7 +1158,7 @@ virParseNumber(const char **str) * * like asprintf but makes sure *strp == NULL on failure */ -int +int virAsprintf(char **strp, const char *fmt, ...) { va_list ap; diff --git a/src/util.h b/src/util.h index 3d603dc..0475bd3 100644 --- a/src/util.h +++ b/src/util.h @@ -112,7 +112,8 @@ int virMacAddrCompare (const char *mac1, const char *mac2); void virSkipSpaces(const char **str); int virParseNumber(const char **str); -int virAsprintf(char **strp, const char *fmt, ...); +int virAsprintf(char **strp, const char *fmt, ...) + ATTRIBUTE_FORMAT(printf, 2, 3); #define VIR_MAC_BUFLEN 6 #define VIR_MAC_PREFIX_BUFLEN 3 -- 1.6.1.rc2.316.geb2f0 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list