From 60a2ad2c4f0b1af8a0c2e693d23e83ce87a6c489 Mon Sep 17 00:00:00 2001 From: Joakim Sindholt Date: Fri, 26 May 2023 11:50:34 +0200 Subject: [PATCH] implement C23 memset_explicit --- include/string.h | 1 + src/string/explicit_bzero.c | 3 +-- src/string/memset_explicit.c | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 src/string/memset_explicit.c diff --git a/include/string.h b/include/string.h index db73d2a9..de4232b5 100644 --- a/include/string.h +++ b/include/string.h @@ -27,6 +27,7 @@ extern "C" { void *memcpy (void *__restrict, const void *__restrict, size_t); void *memmove (void *, const void *, size_t); void *memset (void *, int, size_t); +void *memset_explicit (void *, int, size_t); int memcmp (const void *, const void *, size_t); void *memchr (const void *, int, size_t); diff --git a/src/string/explicit_bzero.c b/src/string/explicit_bzero.c index f2e12f23..738a096b 100644 --- a/src/string/explicit_bzero.c +++ b/src/string/explicit_bzero.c @@ -3,6 +3,5 @@ void explicit_bzero(void *d, size_t n) { - d = memset(d, 0, n); - __asm__ __volatile__ ("" : : "r"(d) : "memory"); + memset_explicit(d, 0, n); } diff --git a/src/string/memset_explicit.c b/src/string/memset_explicit.c new file mode 100644 index 00000000..ac54f0cf --- /dev/null +++ b/src/string/memset_explicit.c @@ -0,0 +1,8 @@ +#include + +void *memset_explicit(void *d, int c, size_t n) +{ + d = memset(d, c, n); + __asm__ __volatile__ ("" : : "r"(d) : "memory"); + return d; +} -- 2.26.3