#elif defined(HAVE_MEMSET_S)
/* This is in the C99 standard. */
memset_s(mem, sz, 0, sz);
-#else
+#elif defined(ENABLE_OPENSSL)
/* This is a slow and ugly function from OpenSSL that fills 'mem' with junk
* based on the pointer value, then uses that junk to update a global
* variable. It's an elaborate ruse to trick the compiler into not
**/
OPENSSL_cleanse(mem, sz);
+#else
+ memset(mem, 0, sz);
+ asm volatile ("" ::: "memory");
#endif /* defined(SecureZeroMemory) || defined(HAVE_SECUREZEROMEMORY) || ... */
/* Just in case some caller of memwipe() is relying on getting a buffer
* if somebody accidentally calls memwipe() instead of memset().
**/
memset(mem, byte, sz);
+
}