Clean up logic in memory_cleanse() for MSVC

Commit fbf327b138 ("Minimal code
changes to allow msvc compilation.") was indeed minimal in terms
of lines touched. But as a result of that minimalism it changed the
logic in memory_cleanse() to first call std::memset() and then
additionally the MSVC-specific SecureZeroMemory() function, and it
also moved a comment to the wrong location.

This commit removes the superfluous call to std::memset() on MSVC
and ensures that the comment is in the right position again.
This commit is contained in:
Tim Ruffing 2019-06-05 22:43:28 +02:00
parent 52ec4c64e8
commit cac30a436c

View file

@ -30,14 +30,14 @@
*/ */
void memory_cleanse(void *ptr, size_t len) void memory_cleanse(void *ptr, size_t len)
{ {
#if defined(_MSC_VER)
SecureZeroMemory(ptr, len);
#else
std::memset(ptr, 0, len); std::memset(ptr, 0, len);
/* As best as we can tell, this is sufficient to break any optimisations that /* As best as we can tell, this is sufficient to break any optimisations that
might try to eliminate "superfluous" memsets. If there's an easy way to might try to eliminate "superfluous" memsets. If there's an easy way to
detect memset_s, it would be better to use that. */ detect memset_s, it would be better to use that. */
#if defined(_MSC_VER)
SecureZeroMemory(ptr, len);
#else
__asm__ __volatile__("" : : "r"(ptr) : "memory"); __asm__ __volatile__("" : : "r"(ptr) : "memory");
#endif #endif
} }