From e441ae8c30b35ad7602ab428753afb4a335b34bf Mon Sep 17 00:00:00 2001 From: jvoisin Date: Sun, 20 Aug 2023 18:09:14 +0200 Subject: Add hardening for strchr --- include/string.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'include') diff --git a/include/string.h b/include/string.h index 6d4b2d8..1fba9d9 100644 --- a/include/string.h +++ b/include/string.h @@ -91,6 +91,17 @@ _FORTIFY_FN(memchr) void *memchr(const void * _FORTIFY_POS0 __d, int __c, size_t return __builtin_memchr(__d, __c, __n); } +__access(read_only, 1, 2) +_FORTIFY_FN(strchr) char *strchr(const char * _FORTIFY_POS0 __s, int __c) +{ + size_t __b = __bos(__s, 0); + + char* __r = __builtin_strchr(__s, __c); + if (__r - __s > __b) + __builtin_trap(); + return __r; +} + #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) -- cgit v1.3