From e8b8e4f51481121a5ce042812e7e62e7b27e6116 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Mon, 21 Aug 2023 17:22:28 +0200 Subject: Make use of __diagnose_if --- include/fortify-headers.h | 8 ++++++++ include/string.h | 1 + 2 files changed, 9 insertions(+) diff --git a/include/fortify-headers.h b/include/fortify-headers.h index 88a0875..3e2140f 100644 --- a/include/fortify-headers.h +++ b/include/fortify-headers.h @@ -99,6 +99,14 @@ #define __diagnose_as_builtin(...) #endif +#if __has_attribute (__diagnose_if) +#define __warning_if(cond, msg) __attribute__ ((__diagnose_if (cond, msg, "warning"))) +#define __error_if(cond, msg) __attribute__ ((__diagnose_if (cond, msg, "error"))) +#else +#define __warning_if(cond, msg) +#define __error_if(cond, msg) +#endif + #endif /* __has_attribute */ /* diff --git a/include/string.h b/include/string.h index 2c11e5e..342bde0 100644 --- a/include/string.h +++ b/include/string.h @@ -75,6 +75,7 @@ _FORTIFY_FN(memmove) void *memmove(void * _FORTIFY_POS0 __d, __access(write_only, 1, 3) __diagnose_as_builtin(__builtin_memset, 1, 2, 3) +__warning_if(__c != 0 && __n == 0, "'memset' will set `0` bytes; did you invert the arguments?") _FORTIFY_FN(memset) void *memset(void * _FORTIFY_POS0 __d, int __c, size_t __n) { size_t __b = __bos(__d, 0); -- cgit v1.3