瀏覽代碼

Have GCC catch errors in format strings

svn:r332
Nick Mathewson 21 年之前
父節點
當前提交
6965a4696c
共有 1 個文件被更改,包括 11 次插入2 次删除
  1. 11 2
      src/common/log.h

+ 11 - 2
src/common/log.h

@@ -9,11 +9,20 @@
 
 #include <syslog.h>
 
+/* magic to make GCC check for proper format strings. */ 
+#ifdef __GNUC__
+#define CHECK_PRINTF(formatIdx, firstArg) \
+   __attribute__ ((format (printf, formatIdx, firstArg)))
+#else
+#define CHECK_PRINTF(formatIdx, firstArg) 
+#endif 
+
 /* Outputs a message to stdout and also logs the same message using syslog. */
-void log(int severity, const char *format, ...);
+void log(int severity, const char *format, ...) CHECK_PRINTF(2,3);
 
 #ifdef __GNUC__
-void _log_fn(int severity, const char *funcname, const char *format, ...);
+void _log_fn(int severity, const char *funcname, const char *format, ...)
+     CHECK_PRINTF(3,4);
 #define log_fn(severity, args...) \
   _log_fn(severity, __PRETTY_FUNCTION__, args)
 #else