]> granicus.if.org Git - php/commitdiff
Disable format string checking by default
authorNikita Popov <nikic@php.net>
Wed, 3 Sep 2014 13:36:04 +0000 (15:36 +0200)
committerNikita Popov <nikic@php.net>
Wed, 3 Sep 2014 13:38:06 +0000 (15:38 +0200)
Instead of removing format attributes altogether, disable the checks
by default. This allows you to do a build with format string checks
and filter out the false positives (basically anything mentioning
%p).

Zend/zend.h

index 9e8f9a62d697d1fa831c896081cd23f27ff90927..a0d8ba9e0cc9287be47749f9ac7da81cc4c8ba61 100644 (file)
@@ -159,13 +159,17 @@ char *alloca ();
 # define ZEND_ATTRIBUTE_ALLOC_SIZE2(X,Y)
 #endif
 
-#if ZEND_GCC_VERSION >= 2007
+/* Format string checks are disabled by default, because we use custom format modifiers (like %p),
+ * which cause a large amount of false positives. You can enable format checks by adding
+ * -DZEND_CHECK_FORMAT_STRINGS to CFLAGS. */
+
+#if ZEND_GCC_VERSION >= 2007 && defined(ZEND_CHECK_FORMAT_STRINGS)
 # define ZEND_ATTRIBUTE_FORMAT(type, idx, first) __attribute__ ((format(type, idx, first)))
 #else
 # define ZEND_ATTRIBUTE_FORMAT(type, idx, first)
 #endif
 
-#if ZEND_GCC_VERSION >= 3001 && !defined(__INTEL_COMPILER)
+#if ZEND_GCC_VERSION >= 3001 && !defined(__INTEL_COMPILER) && defined(ZEND_CHECK_FORMAT_STRINGS)
 # define ZEND_ATTRIBUTE_PTR_FORMAT(type, idx, first) __attribute__ ((format(type, idx, first)))
 #else
 # define ZEND_ATTRIBUTE_PTR_FORMAT(type, idx, first)