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) \ @@ -3333,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 \ secapi/asctime_s.c \ secapi/memcpy_s.c \ + secapi/memmove_s.c \ secapi/rand_s.c \ secapi/sprintf_s.c \ secapi/strerror_s.c \ @@ -9054,6 +9060,8 @@ secapi/lib32_libmsvcrt_a-asctime_s.$(OBJEXT): secapi/$(am__dirstamp) \ secapi/$(DEPDIR)/$(am__dirstamp) secapi/lib32_libmsvcrt_a-memcpy_s.$(OBJEXT): secapi/$(am__dirstamp) \ secapi/$(DEPDIR)/$(am__dirstamp) +secapi/lib32_libmsvcrt_a-memmove_s.$(OBJEXT): secapi/$(am__dirstamp) \ + secapi/$(DEPDIR)/$(am__dirstamp) secapi/lib32_libmsvcrt_a-rand_s.$(OBJEXT): secapi/$(am__dirstamp) \ secapi/$(DEPDIR)/$(am__dirstamp) secapi/lib32_libmsvcrt_a-sprintf_s.$(OBJEXT): secapi/$(am__dirstamp) \ @@ -10654,6 +10662,8 @@ secapi/lib64_libmsvcrt_a-asctime_s.$(OBJEXT): secapi/$(am__dirstamp) \ secapi/$(DEPDIR)/$(am__dirstamp) secapi/lib64_libmsvcrt_a-memcpy_s.$(OBJEXT): secapi/$(am__dirstamp) \ secapi/$(DEPDIR)/$(am__dirstamp) +secapi/lib64_libmsvcrt_a-memmove_s.$(OBJEXT): secapi/$(am__dirstamp) \ + secapi/$(DEPDIR)/$(am__dirstamp) secapi/lib64_libmsvcrt_a-rand_s.$(OBJEXT): secapi/$(am__dirstamp) \ secapi/$(DEPDIR)/$(am__dirstamp) secapi/lib64_libmsvcrt_a-sprintf_s.$(OBJEXT): secapi/$(am__dirstamp) \ @@ -12180,6 +12190,8 @@ secapi/libarm32_libmsvcrt_a-asctime_s.$(OBJEXT): \ secapi/$(am__dirstamp) secapi/$(DEPDIR)/$(am__dirstamp) secapi/libarm32_libmsvcrt_a-memcpy_s.$(OBJEXT): \ secapi/$(am__dirstamp) secapi/$(DEPDIR)/$(am__dirstamp) +secapi/libarm32_libmsvcrt_a-memmove_s.$(OBJEXT): \ + secapi/$(am__dirstamp) secapi/$(DEPDIR)/$(am__dirstamp) secapi/libarm32_libmsvcrt_a-rand_s.$(OBJEXT): secapi/$(am__dirstamp) \ secapi/$(DEPDIR)/$(am__dirstamp) secapi/libarm32_libmsvcrt_a-sprintf_s.$(OBJEXT): \ @@ -15104,6 +15116,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmsvcrt_a-_wstrtime_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmsvcrt_a-asctime_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmsvcrt_a-memcpy_s.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmsvcrt_a-memmove_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmsvcrt_a-rand_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmsvcrt_a-sprintf_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmsvcrt_a-strerror_s.Po@am__quote@ @@ -15140,6 +15153,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmsvcrt_a-_wstrtime_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmsvcrt_a-asctime_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmsvcrt_a-memcpy_s.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmsvcrt_a-memmove_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmsvcrt_a-rand_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmsvcrt_a-sprintf_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmsvcrt_a-strerror_s.Po@am__quote@ @@ -15176,6 +15190,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/libarm32_libmsvcrt_a-_wstrtime_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/libarm32_libmsvcrt_a-asctime_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/libarm32_libmsvcrt_a-memcpy_s.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/libarm32_libmsvcrt_a-memmove_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/libarm32_libmsvcrt_a-rand_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/libarm32_libmsvcrt_a-sprintf_s.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/libarm32_libmsvcrt_a-strerror_s.Po@am__quote@ @@ -25136,6 +25151,20 @@ secapi/lib32_libmsvcrt_a-memcpy_s.obj: secapi/memcpy_s.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmsvcrt_a-memcpy_s.obj `if test -f 'secapi/memcpy_s.c'; then $(CYGPATH_W) 'secapi/memcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memcpy_s.c'; fi` +secapi/lib32_libmsvcrt_a-memmove_s.o: secapi/memmove_s.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmsvcrt_a-memmove_s.o -MD -MP -MF secapi/$(DEPDIR)/lib32_libmsvcrt_a-memmove_s.Tpo -c -o secapi/lib32_libmsvcrt_a-memmove_s.o `test -f 'secapi/memmove_s.c' || echo '$(srcdir)/'`secapi/memmove_s.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib32_libmsvcrt_a-memmove_s.Tpo secapi/$(DEPDIR)/lib32_libmsvcrt_a-memmove_s.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/memmove_s.c' object='secapi/lib32_libmsvcrt_a-memmove_s.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmsvcrt_a-memmove_s.o `test -f 'secapi/memmove_s.c' || echo '$(srcdir)/'`secapi/memmove_s.c + +secapi/lib32_libmsvcrt_a-memmove_s.obj: secapi/memmove_s.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmsvcrt_a-memmove_s.obj -MD -MP -MF secapi/$(DEPDIR)/lib32_libmsvcrt_a-memmove_s.Tpo -c -o secapi/lib32_libmsvcrt_a-memmove_s.obj `if test -f 'secapi/memmove_s.c'; then $(CYGPATH_W) 'secapi/memmove_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memmove_s.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib32_libmsvcrt_a-memmove_s.Tpo secapi/$(DEPDIR)/lib32_libmsvcrt_a-memmove_s.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/memmove_s.c' object='secapi/lib32_libmsvcrt_a-memmove_s.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmsvcrt_a-memmove_s.obj `if test -f 'secapi/memmove_s.c'; then $(CYGPATH_W) 'secapi/memmove_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memmove_s.c'; fi` + secapi/lib32_libmsvcrt_a-rand_s.o: secapi/rand_s.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmsvcrt_a-rand_s.o -MD -MP -MF secapi/$(DEPDIR)/lib32_libmsvcrt_a-rand_s.Tpo -c -o secapi/lib32_libmsvcrt_a-rand_s.o `test -f 'secapi/rand_s.c' || echo '$(srcdir)/'`secapi/rand_s.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib32_libmsvcrt_a-rand_s.Tpo secapi/$(DEPDIR)/lib32_libmsvcrt_a-rand_s.Po @@ -34236,6 +34265,20 @@ secapi/lib64_libmsvcrt_a-memcpy_s.obj: secapi/memcpy_s.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmsvcrt_a-memcpy_s.obj `if test -f 'secapi/memcpy_s.c'; then $(CYGPATH_W) 'secapi/memcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memcpy_s.c'; fi` +secapi/lib64_libmsvcrt_a-memmove_s.o: secapi/memmove_s.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmsvcrt_a-memmove_s.o -MD -MP -MF secapi/$(DEPDIR)/lib64_libmsvcrt_a-memmove_s.Tpo -c -o secapi/lib64_libmsvcrt_a-memmove_s.o `test -f 'secapi/memmove_s.c' || echo '$(srcdir)/'`secapi/memmove_s.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib64_libmsvcrt_a-memmove_s.Tpo secapi/$(DEPDIR)/lib64_libmsvcrt_a-memmove_s.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/memmove_s.c' object='secapi/lib64_libmsvcrt_a-memmove_s.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmsvcrt_a-memmove_s.o `test -f 'secapi/memmove_s.c' || echo '$(srcdir)/'`secapi/memmove_s.c + +secapi/lib64_libmsvcrt_a-memmove_s.obj: secapi/memmove_s.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmsvcrt_a-memmove_s.obj -MD -MP -MF secapi/$(DEPDIR)/lib64_libmsvcrt_a-memmove_s.Tpo -c -o secapi/lib64_libmsvcrt_a-memmove_s.obj `if test -f 'secapi/memmove_s.c'; then $(CYGPATH_W) 'secapi/memmove_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memmove_s.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib64_libmsvcrt_a-memmove_s.Tpo secapi/$(DEPDIR)/lib64_libmsvcrt_a-memmove_s.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/memmove_s.c' object='secapi/lib64_libmsvcrt_a-memmove_s.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmsvcrt_a-memmove_s.obj `if test -f 'secapi/memmove_s.c'; then $(CYGPATH_W) 'secapi/memmove_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memmove_s.c'; fi` + secapi/lib64_libmsvcrt_a-rand_s.o: secapi/rand_s.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmsvcrt_a-rand_s.o -MD -MP -MF secapi/$(DEPDIR)/lib64_libmsvcrt_a-rand_s.Tpo -c -o secapi/lib64_libmsvcrt_a-rand_s.o `test -f 'secapi/rand_s.c' || echo '$(srcdir)/'`secapi/rand_s.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib64_libmsvcrt_a-rand_s.Tpo secapi/$(DEPDIR)/lib64_libmsvcrt_a-rand_s.Po @@ -42902,6 +42945,20 @@ secapi/libarm32_libmsvcrt_a-memcpy_s.obj: secapi/memcpy_s.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarm32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/libarm32_libmsvcrt_a-memcpy_s.obj `if test -f 'secapi/memcpy_s.c'; then $(CYGPATH_W) 'secapi/memcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memcpy_s.c'; fi` +secapi/libarm32_libmsvcrt_a-memmove_s.o: secapi/memmove_s.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarm32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/libarm32_libmsvcrt_a-memmove_s.o -MD -MP -MF secapi/$(DEPDIR)/libarm32_libmsvcrt_a-memmove_s.Tpo -c -o secapi/libarm32_libmsvcrt_a-memmove_s.o `test -f 'secapi/memmove_s.c' || echo '$(srcdir)/'`secapi/memmove_s.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/libarm32_libmsvcrt_a-memmove_s.Tpo secapi/$(DEPDIR)/libarm32_libmsvcrt_a-memmove_s.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/memmove_s.c' object='secapi/libarm32_libmsvcrt_a-memmove_s.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarm32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/libarm32_libmsvcrt_a-memmove_s.o `test -f 'secapi/memmove_s.c' || echo '$(srcdir)/'`secapi/memmove_s.c + +secapi/libarm32_libmsvcrt_a-memmove_s.obj: secapi/memmove_s.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarm32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/libarm32_libmsvcrt_a-memmove_s.obj -MD -MP -MF secapi/$(DEPDIR)/libarm32_libmsvcrt_a-memmove_s.Tpo -c -o secapi/libarm32_libmsvcrt_a-memmove_s.obj `if test -f 'secapi/memmove_s.c'; then $(CYGPATH_W) 'secapi/memmove_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memmove_s.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/libarm32_libmsvcrt_a-memmove_s.Tpo secapi/$(DEPDIR)/libarm32_libmsvcrt_a-memmove_s.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/memmove_s.c' object='secapi/libarm32_libmsvcrt_a-memmove_s.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarm32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/libarm32_libmsvcrt_a-memmove_s.obj `if test -f 'secapi/memmove_s.c'; then $(CYGPATH_W) 'secapi/memmove_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memmove_s.c'; fi` + secapi/libarm32_libmsvcrt_a-rand_s.o: secapi/rand_s.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarm32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/libarm32_libmsvcrt_a-rand_s.o -MD -MP -MF secapi/$(DEPDIR)/libarm32_libmsvcrt_a-rand_s.Tpo -c -o secapi/libarm32_libmsvcrt_a-rand_s.o `test -f 'secapi/rand_s.c' || echo '$(srcdir)/'`secapi/rand_s.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/libarm32_libmsvcrt_a-rand_s.Tpo secapi/$(DEPDIR)/libarm32_libmsvcrt_a-rand_s.Po diff --git a/mingw-w64-crt/lib32/msvcrt.def.in b/mingw-w64-crt/lib32/msvcrt.def.in index f473f45..0b4de3f 100644 --- a/mingw-w64-crt/lib32/msvcrt.def.in +++ b/mingw-w64-crt/lib32/msvcrt.def.in @@ -1194,7 +1194,7 @@ getenv_s mbsrtowcs_s mbstowcs_s ; memcpy_s replaced by emu -memmove_s +; memmove_s replaced by emu printf_s qsort_s scanf_s diff --git a/mingw-w64-crt/lib64/msvcrt.def.in b/mingw-w64-crt/lib64/msvcrt.def.in index f42d1fc..dbe5022 100644 --- a/mingw-w64-crt/lib64/msvcrt.def.in +++ b/mingw-w64-crt/lib64/msvcrt.def.in @@ -1141,7 +1141,7 @@ memcmp memcpy ; memcpy_s replaced by emu memmove -memmove_s +; memmove_s replaced by emu memset mktime modf diff --git a/mingw-w64-crt/secapi/memmove_s.c b/mingw-w64-crt/secapi/memmove_s.c new file mode 100644 index 0000000..a7b8501 --- /dev/null +++ b/mingw-w64-crt/secapi/memmove_s.c @@ -0,0 +1,60 @@ +#include <windows.h> +#include <malloc.h> +#include <errno.h> +#include <msvcrt.h> + +errno_t __cdecl memmove_s (void *, size_t, const void *, size_t); +static errno_t __cdecl _int_memmove_s (void *, size_t, const void *, size_t); +static errno_t __cdecl _stub (void *, size_t, const void *, size_t); + +errno_t __cdecl (*__MINGW_IMP_SYMBOL(memmove_s))(void *, size_t, const void *, size_t) = + _stub; + +static errno_t __cdecl +_stub (void *d, size_t dn, const void *s, size_t n) +{ + errno_t __cdecl (*f)(void *, size_t, const void *, size_t) = __MINGW_IMP_SYMBOL(memmove_s); + + if (f == _stub) + { + f = (errno_t __cdecl (*)(void *, size_t, const void *, size_t)) + GetProcAddress (__mingw_get_msvcrt_handle (), "memmove_s"); + if (!f) + f = _int_memmove_s; + __MINGW_IMP_SYMBOL(memmove_s) = f; + } + return (*f)(d, dn, s, n); +} + +errno_t __cdecl +memmove_s (void *d, size_t dn, const void *s, size_t n) +{ + return _stub (d, dn, s, n); +} + +static errno_t __cdecl +_int_memmove_s (void *d, size_t dn, const void *s, size_t n) +{ + if (!n) + return 0; + + if (!d || !s) + { + if (d) + memset (d, 0, dn); + errno = EINVAL; + return EINVAL; + } + + if (dn < n) + { + memset (d, 0, dn); + + errno = ERANGE; + return ERANGE; + } + + memmove (d, s, n); + + return 0; +} -- 1.8.3.1
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Infragistics Professional Build stunning WinForms apps today! Reboot your WinForms applications with our WinForms controls. Build a bridge from your legacy apps to the future. http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public