utils: Check if the parameter passed to countof() is actually an array type
authorMartin Willi <martin@revosec.ch>
Fri, 4 Jul 2014 12:37:58 +0000 (14:37 +0200)
committerMartin Willi <martin@revosec.ch>
Mon, 25 Aug 2014 07:48:53 +0000 (09:48 +0200)
This should avoid errors such as the one fixed with 118b2879.

src/libstrongswan/utils/utils.h

index cb60c6e..da253cc 100644 (file)
@@ -356,7 +356,8 @@ static inline void *memset_noop(void *s, int c, size_t n)
 /**
  * Get the number of elements in an array
  */
-#define countof(array) (sizeof(array)/sizeof(array[0]))
+#define countof(array) (sizeof(array)/sizeof((array)[0]) \
+                                               + BUILD_ASSERT_ARRAY(array))
 
 /**
  * Ignore result of functions tagged with warn_unused_result attributes