summaryrefslogtreecommitdiff
path: root/include/string.h
diff options
context:
space:
mode:
authorjvoisin2023-09-30 00:15:26 +0200
committerjvoisin2023-09-30 00:17:34 +0200
commita2745278eb03d63f4df8da4367f27ec8cab7deb9 (patch)
treeda05948feff6d60878ac17cd2a91d315ad8067c2 /include/string.h
parent4988174f7eecc6da544ebf23156ce638cecf0f3f (diff)
Add `strlen`
Diffstat (limited to 'include/string.h')
-rw-r--r--include/string.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/string.h b/include/string.h
index e681181..ab7ac43 100644
--- a/include/string.h
+++ b/include/string.h
@@ -35,6 +35,7 @@ extern "C" {
35#undef memset 35#undef memset
36#undef strcat 36#undef strcat
37#undef strcpy 37#undef strcpy
38#undef strlen
38#undef strncat 39#undef strncat
39#undef strncpy 40#undef strncpy
40 41
@@ -237,6 +238,22 @@ _FORTIFY_FN(strcpy) char *strcpy(char * _FORTIFY_POS0 __d, const char *__s)
237#endif 238#endif
238} 239}
239 240
241__access (read_only, 1)
242#if __has_builtin(__builtin_strlen)
243__diagnose_as_builtin(__builtin_strlen, 1)
244#endif
245_FORTIFY_FN(strlen) size_t strlen(const char * _FORTIFY_POS0 __s)
246{
247#if __has_builtin(__builtin___strlen_chk) && USE_NATIVE_CHK
248 return __builtin___strlen_chk(__s, __bos(__s, 0));
249#else
250 size_t ret = __orig_strlen(__s);
251 if (ret > __bos(__s, 0) - 1)
252 __builtin_trap();
253 return ret;
254#endif
255}
256
240__access (read_write, 1) 257__access (read_write, 1)
241__access (read_only, 2, 3) 258__access (read_only, 2, 3)
242#if __has_builtin(__builtin_strncat) 259#if __has_builtin(__builtin_strncat)