diff options
author | Stef Walter <stefw@gnome.org> | 2012-05-13 14:03:17 +0200 |
---|---|---|
committer | Stef Walter <stefw@gnome.org> | 2012-05-13 14:03:17 +0200 |
commit | 7bd4114182fcc86cd2515708fdf4d76622e0237d (patch) | |
tree | 5efb237c364a4a2259a747ae0edfcad6b5e45e40 /p11-kit | |
parent | 14b0be4353e5c4464cb9f61e419a2f8caf8757d0 (diff) | |
download | p11-kit-7bd4114182fcc86cd2515708fdf4d76622e0237d.tar.gz |
Use gcc extensions to check varargs during compile
* Add macros GNUC_PRINTF and GNUC_NULL_TERMINATED to check
correct printf and NULL terminated style varargs
Diffstat (limited to 'p11-kit')
-rw-r--r-- | p11-kit/conf.c | 11 | ||||
-rw-r--r-- | p11-kit/debug.h | 4 | ||||
-rw-r--r-- | p11-kit/modules.c | 7 | ||||
-rw-r--r-- | p11-kit/private.h | 4 |
4 files changed, 19 insertions, 7 deletions
diff --git a/p11-kit/conf.c b/p11-kit/conf.c index 5c09ff5..917ce4c 100644 --- a/p11-kit/conf.c +++ b/p11-kit/conf.c @@ -111,8 +111,13 @@ strequal (const char *one, const char *two) return strcmp (one, two) == 0; } -static char* -strconcat (const char *first, ...) +static char * +strconcat (const char *first, + ...) GNUC_NULL_TERMINATED; + +static char * +strconcat (const char *first, + ...) { size_t length = 0; const char *arg; @@ -646,7 +651,7 @@ _p11_conf_parse_boolean (const char *string, return 0; } else { _p11_message ("invalid setting '%s' defaulting to '%s'", - default_value ? "yes" : "no"); + string, default_value ? "yes" : "no"); return default_value; } } diff --git a/p11-kit/debug.h b/p11-kit/debug.h index e5b970e..7fa9854 100644 --- a/p11-kit/debug.h +++ b/p11-kit/debug.h @@ -35,6 +35,8 @@ #ifndef DEBUG_H #define DEBUG_H +#include "compat.h" + /* Please keep this enum in sync with keys in debug.c */ typedef enum { DEBUG_LIB = 1 << 1, @@ -49,7 +51,7 @@ void _p11_debug_init (void); void _p11_debug_message (int flag, const char *format, - ...); + ...) GNUC_PRINTF (2, 3); #endif /* DEBUG_H */ diff --git a/p11-kit/modules.c b/p11-kit/modules.c index 0498708..5eb97fd 100644 --- a/p11-kit/modules.c +++ b/p11-kit/modules.c @@ -525,14 +525,17 @@ load_registered_modules_unlocked (void) * These variables will be cleared if ownership is transeferred * by the above function call. */ - free (name); _p11_hash_free (config); if (critical && rv != CKR_OK) { - _p11_message ("aborting initializationg because module '%s' was marked as critical"); + _p11_message ("aborting initialization because module '%s' was marked as critical", + name); _p11_hash_free (configs); + free (name); return rv; } + + free (name); } _p11_hash_free (configs); diff --git a/p11-kit/private.h b/p11-kit/private.h index da9fbae..f2cd181 100644 --- a/p11-kit/private.h +++ b/p11-kit/private.h @@ -35,6 +35,7 @@ #ifndef __P11_KIT_PRIVATE_H__ #define __P11_KIT_PRIVATE_H__ +#include "compat.h" #include "pkcs11.h" #include "util.h" @@ -53,7 +54,8 @@ typedef struct { #define _p11_unlock() _p11_mutex_unlock (&_p11_mutex); -void _p11_message (const char* msg, ...); +void _p11_message (const char* msg, + ...) GNUC_PRINTF (1, 2); p11_local * _p11_library_get_thread_local (void); |