diff options
-rw-r--r-- | include/ruby/missing.h | 2 | ||||
-rw-r--r-- | missing/explicit_bzero.c | 6 | ||||
-rw-r--r-- | random.c | 1 | ||||
-rw-r--r-- | win32/Makefile.sub | 1 |
4 files changed, 9 insertions, 1 deletions
diff --git a/include/ruby/missing.h b/include/ruby/missing.h index cec0d1ca76..1d7d2b8a82 100644 --- a/include/ruby/missing.h +++ b/include/ruby/missing.h @@ -252,7 +252,7 @@ explicit_bzero_by_memset_s(void *b, size_t len) memset_s(b, len, 0, len); } # define explicit_bzero(b, len) explicit_bzero_by_memset_s(b, len) -# elif defined _WIN32 +# elif defined SecureZeroMemory # define explicit_bzero(b, len) SecureZeroMemory(b, len) # endif #endif diff --git a/missing/explicit_bzero.c b/missing/explicit_bzero.c index c1933bf1ff..99b2e2758c 100644 --- a/missing/explicit_bzero.c +++ b/missing/explicit_bzero.c @@ -1,6 +1,10 @@ #include "ruby/missing.h" #include <string.h> +#ifdef _WIN32 +#include <windows.h> +#endif + /* *BSD have explicit_bzero(). Windows, OS-X have memset_s(). @@ -30,6 +34,8 @@ explicit_bzero(void *b, size_t len) { #ifdef HAVE_MEMSET_S memset_s(b, len, 0, len); +#elif defined SecureZeroMemory + SecureZeroMemory(b, len); #else { /* @@ -89,6 +89,7 @@ The original copyright notice follows. # define _WIN32_WINNT 0x400 # undef __WINCRYPT_H__ # endif +#include <windows.h> #include <wincrypt.h> #endif #include "ruby_atomic.h" diff --git a/win32/Makefile.sub b/win32/Makefile.sub index b74d44ee14..751cdb24ea 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -244,6 +244,7 @@ MISSING = crypt.obj ffs.obj langinfo.obj lgamma_r.obj strlcat.obj strlcpy.obj wi !if $(RT_VER) < 120 MISSING = $(MISSING) acosh.obj cbrt.obj erf.obj tgamma.obj !endif +MISSING = $(MISSING) explicit_bzero.obj !endif DLNOBJ = dln.obj |