Some applications, like CryptoPP, won't run on Windows XP, because
memmove_s isn't defined in that OS. As I needed CryptoPP to compile
easily, I wrote this patch. It emulates the method by checking for the
availability and falling back on memmove (without s).
I mimicked memcpy_s.
I'm not subscribed to the list, so please make sure my email address is
in the recipients list when replying on this email.
Ruben De Smet
From d51b0c6477f1ce5ca2cc0377be239339327fa252 Mon Sep 17 00:00:00 2001
From: Ruben De Smet ruben.de.s...@telenet.be
Date: Mon, 28 Jul 2014 21:15:57 +0200
Subject: [PATCH] Add secapi wrapper for memmove_s
---
mingw-w64-crt/Makefile.am | 1 +
mingw-w64-crt/Makefile.in | 73 ++-
mingw-w64-crt/lib32/msvcrt.def.in | 2 +-
mingw-w64-crt/lib64/msvcrt.def.in | 2 +-
mingw-w64-crt/secapi/memmove_s.c | 60
5 files changed, 128 insertions(+), 10 deletions(-)
create mode 100644 mingw-w64-crt/secapi/memmove_s.c
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 5d4e469..1cfac22 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -185,6 +185,7 @@ src_msvcrt=\
secapi/_wstrdate_s.c \
secapi/asctime_s.c \
secapi/memcpy_s.c \
+ secapi/memmove_s.c \
secapi/rand_s.c \
secapi/sprintf_s.c \
secapi/strerror_s.c \
diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in
index 8881803..67c3e07 100644
--- a/mingw-w64-crt/Makefile.in
+++ b/mingw-w64-crt/Makefile.in
@@ -1135,9 +1135,10 @@ am__lib32_libmsvcrt_a_SOURCES_DIST = misc/invalid_parameter_handler.c \
secapi/_vcwprintf_s_l.c secapi/_waccess_s.c \
secapi/_wasctime_s.c secapi/_wctime32_s.c secapi/_wctime64_s.c \
secapi/_wstrtime_s.c secapi/_wmktemp_s.c secapi/_wstrdate_s.c \
- secapi/asctime_s.c secapi/memcpy_s.c secapi/rand_s.c \
- secapi/sprintf_s.c secapi/strerror_s.c secapi/vsprintf_s.c \
- secapi/wmemcpy_s.c misc/lc_locale_func.c lib32/msvcrt.def.in
+ secapi/asctime_s.c secapi/memcpy_s.c secapi/memmove_s.c \
+ secapi/rand_s.c secapi/sprintf_s.c secapi/strerror_s.c \
+ secapi/vsprintf_s.c secapi/wmemcpy_s.c misc/lc_locale_func.c \
+ lib32/msvcrt.def.in
am__objects_21 = \
misc/lib32_libmsvcrt_a-invalid_parameter_handler.$(OBJEXT) \
misc/lib32_libmsvcrt_a-output_format.$(OBJEXT) \
@@ -1173,6 +1174,7 @@ am__objects_21 = \
secapi/lib32_libmsvcrt_a-_wstrdate_s.$(OBJEXT) \
secapi/lib32_libmsvcrt_a-asctime_s.$(OBJEXT) \
secapi/lib32_libmsvcrt_a-memcpy_s.$(OBJEXT) \
+ secapi/lib32_libmsvcrt_a-memmove_s.$(OBJEXT) \
secapi/lib32_libmsvcrt_a-rand_s.$(OBJEXT) \
secapi/lib32_libmsvcrt_a-sprintf_s.$(OBJEXT) \
secapi/lib32_libmsvcrt_a-strerror_s.$(OBJEXT) \
@@ -2270,9 +2272,9 @@ am__lib64_libmsvcrt_a_SOURCES_DIST = misc/invalid_parameter_handler.c \
secapi/_vcwprintf_s_l.c secapi/_waccess_s.c \
secapi/_wasctime_s.c secapi/_wctime32_s.c secapi/_wctime64_s.c \
secapi/_wstrtime_s.c secapi/_wmktemp_s.c secapi/_wstrdate_s.c \
- secapi/asctime_s.c secapi/memcpy_s.c secapi/rand_s.c \
- secapi/sprintf_s.c secapi/strerror_s.c secapi/vsprintf_s.c \
- secapi/wmemcpy_s.c lib64/msvcrt.def.in
+ secapi/asctime_s.c secapi/memcpy_s.c secapi/memmove_s.c \
+ secapi/rand_s.c secapi/sprintf_s.c secapi/strerror_s.c \
+ secapi/vsprintf_s.c secapi/wmemcpy_s.c lib64/msvcrt.def.in
am__objects_54 = \
misc/lib64_libmsvcrt_a-invalid_parameter_handler.$(OBJEXT) \
misc/lib64_libmsvcrt_a-output_format.$(OBJEXT) \
@@ -2308,6 +2310,7 @@ am__objects_54 = \
secapi/lib64_libmsvcrt_a-_wstrdate_s.$(OBJEXT) \
secapi/lib64_libmsvcrt_a-asctime_s.$(OBJEXT) \
secapi/lib64_libmsvcrt_a-memcpy_s.$(OBJEXT) \
+ secapi/lib64_libmsvcrt_a-memmove_s.$(OBJEXT) \
secapi/lib64_libmsvcrt_a-rand_s.$(OBJEXT) \
secapi/lib64_libmsvcrt_a-sprintf_s.$(OBJEXT) \
secapi/lib64_libmsvcrt_a-strerror_s.$(OBJEXT) \
@@ -,8 +3336,9 @@ am__libarm32_libmsvcrt_a_SOURCES_DIST = \
secapi/_waccess_s.c secapi/_wasctime_s.c secapi/_wctime32_s.c \
secapi/_wctime64_s.c secapi/_wstrtime_s.c secapi/_wmktemp_s.c \
secapi/_wstrdate_s.c secapi/asctime_s.c secapi/memcpy_s.c \
- secapi/rand_s.c secapi/sprintf_s.c secapi/strerror_s.c \
- secapi/vsprintf_s.c secapi/wmemcpy_s.c misc/lc_locale_func.c
+ secapi/memmove_s.c secapi/rand_s.c secapi/sprintf_s.c \
+ secapi/strerror_s.c secapi/vsprintf_s.c secapi/wmemcpy_s.c \
+ misc/lc_locale_func.c
am__objects_83 = \
misc/libarm32_libmsvcrt_a-invalid_parameter_handler.$(OBJEXT) \
misc/libarm32_libmsvcrt_a-output_format.$(OBJEXT) \
@@ -3370,6 +3374,7 @@ am__objects_83 = \
secapi/libarm32_libmsvcrt_a-_wstrdate_s.$(OBJEXT) \
secapi/libarm32_libmsvcrt_a-asctime_s.$(OBJEXT) \
secapi/libarm32_libmsvcrt_a-memcpy_s.$(OBJEXT) \
+ secapi/libarm32_libmsvcrt_a-memmove_s.$(OBJEXT) \
secapi/libarm32_libmsvcrt_a-rand_s.$(OBJEXT) \
secapi/libarm32_libmsvcrt_a-sprintf_s.$(OBJEXT) \
secapi/libarm32_libmsvcrt_a-strerror_s.$(OBJEXT) \
@@ -5059,6 +5064,7 @@ src_msvcrt = \
secapi/_wstrdate_s.c \