From: Christian Göttsche Date: Tue, 24 Jan 2023 14:44:35 +0000 (+0100) Subject: Modernize manual memzero implementation X-Git-Tag: 4.14.0-rc1~226 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0d79ee0320b337510aee5734579973597653df6;p=thirdparty%2Fshadow.git Modernize manual memzero implementation Instead of using volatile pointers to prevent the compiler from optimizing the call away, use a memory barrier. This requires support for embedded assembly, which should be fine after the recent requirement bumps. --- diff --git a/lib/defines.h b/lib/defines.h index 54053103a..d3416f119 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -54,10 +54,8 @@ #else /* !HAVE_MEMSET_S && HAVE_EXPLICIT_BZERO */ static inline void memzero(void *ptr, size_t size) { - volatile unsigned char * volatile p = ptr; - while (size--) { - *p++ = '\0'; - } + ptr = memset(ptr, '\0', size); + __asm__ __volatile__ ("" : : "r"(ptr) : "memory"); } #endif /* !HAVE_MEMSET_S && !HAVE_EXPLICIT_BZERO */