From 140cffbe84a08669d67c3257258d2bb70ff29c3b Mon Sep 17 00:00:00 2001 From: jvoisin Date: Fri, 8 Mar 2024 16:07:57 +0100 Subject: Add some NULL-pointers checks See: - https://www.imperialviolet.org/2016/06/26/nonnull.html - https://davidben.net/2024/01/15/empty-slices.html --- include/string.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'include/string.h') diff --git a/include/string.h b/include/string.h index 75dadab..24c1501 100644 --- a/include/string.h +++ b/include/string.h @@ -51,6 +51,9 @@ __error_if((__fh_bos(__od, 0) < __n), "'memcpy' called with `n` bigger than the #if __has_builtin(__builtin___memcpy_chk) && USE_NATIVE_CHK return __builtin___memcpy_chk(__od, __os, __n, __fh_bos(__od, 0)); #else + if (!__od || !__os) + __builtin_trap(); + __fh_size_t __bd = __fh_bos(__od, 0); __fh_size_t __bs = __fh_bos(__os, 0); char *__d = (char *)__od; @@ -75,6 +78,9 @@ _FORTIFY_FN(memmove) void *memmove(void * _FORTIFY_POS0 __d, #if __has_builtin(__builtin___memmove_chk) && USE_NATIVE_CHK return __builtin___memmove_chk(__d, __s, __n, __fh_bos(__d, 0)); #else + if (!__d || !__s) + __builtin_trap(); + __fh_size_t __bd = __fh_bos(__d, 0); __fh_size_t __bs = __fh_bos(__s, 0); @@ -94,6 +100,9 @@ __warning_if(__c != 0 && __n == 0, "'memset' will set `0` bytes; did you invert #if __has_builtin(__builtin___memset_chk) && USE_NATIVE_CHK return __builtin___memset_chk(__d, __c, __n, __fh_bos(__d, 0)); #else + if (!__d) + __builtin_trap(); + __fh_size_t __b = __fh_bos(__d, 0); if (__n > __b) @@ -111,6 +120,9 @@ _FORTIFY_FN(memchr) void *memchr(const void * _FORTIFY_POS0 __d, int __c, size_t #if __has_builtin(__builtin___memchr_chk) && USE_NATIVE_CHK return __builtin___memchr_chk(__d, __c, __n, __fh_bos(__d, 0)); #else + if (!__d) + __builtin_trap(); + __fh_size_t __b = __fh_bos(__d, 0); if (__n > __b) @@ -322,6 +334,9 @@ _FORTIFY_FN(mempcpy) void *mempcpy(void * _FORTIFY_POS0 __d, #if __has_builtin(__builtin___mempcpy_chk) && USE_NATIVE_CHK return __builtin___mempcpy_chk(__d, __s, __n, __fh_bos(__d, 0)); #else + if (!__d || !__s) + __builtin_trap(); + __fh_size_t __bd = __fh_bos(__d, 0); __fh_size_t __bs = __fh_bos(__s, 0); -- cgit v1.3