_gcry_burn_stack: use memset for clearing memory
authorJussi Kivilinna <jussi.kivilinna@iki.fi>
Thu, 22 Mar 2018 19:42:23 +0000 (21:42 +0200)
committerJussi Kivilinna <jussi.kivilinna@iki.fi>
Thu, 22 Mar 2018 19:42:23 +0000 (21:42 +0200)
* src/misc.c (__gcry_burn_stack) [HAVE_VLA]: Use 'memset' for clearing
stack.
--

Patch switches stacking burning to use faster memset instead of
wipememory. Memset is accessed through volatile function pointer,
so that compiler will not optimize away the call.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
src/misc.c

index 002a84f..47d2dc7 100644 (file)
@@ -501,11 +501,12 @@ void
 __gcry_burn_stack (unsigned int bytes)
 {
 #ifdef HAVE_VLA
+    static void *(*volatile memset_ptr)(void *, int, size_t) = (void *)memset;
     /* (bytes == 0 ? 1 : bytes) == (!bytes + bytes) */
     unsigned int buflen = ((!bytes + bytes) + 63) & ~63;
-    volatile char buf[buflen];
+    char buf[buflen];
 
-    wipememory (buf, sizeof buf);
+    memset_ptr (buf, 0, sizeof buf);
 #else
     volatile char buf[64];