[openssl] master update

Richard Levitte levitte at openssl.org
Wed Jul 15 21:04:36 UTC 2020


The branch master has been updated
       via  c35b8535768e22cd3b7743f4887a72e53a621a5f (commit)
       via  a1736f37aee855fecf463b9f15519e12c333ecfc (commit)
       via  7a09fab2b3d201062a2cc07c1a40d09d61ea31bd (commit)
       via  6c2a56beec847da18e5ac60a30219f0dea39baf9 (commit)
      from  ce3080e931d77fda3bb4f2d923fcc6cec967d1a3 (commit)


- Log -----------------------------------------------------------------
commit c35b8535768e22cd3b7743f4887a72e53a621a5f
Author: aSoujyuTanaka <soujyu.tanaka at access-company.com>
Date:   Sun Apr 12 04:10:57 2020 +0900

    Enable WinCE build without deceiving _MSC_VER.
    
    Reviewed-by: Mark J. Cox <mark at awe.com>
    Reviewed-by: Richard Levitte <levitte at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/11526)

commit a1736f37aee855fecf463b9f15519e12c333ecfc
Author: aSoujyuTanaka <soujyu.tanaka at access-company.com>
Date:   Sun Apr 12 04:00:17 2020 +0900

    To generate makefile with correct parameters for WinCE.
    
    Reviewed-by: Mark J. Cox <mark at awe.com>
    Reviewed-by: Richard Levitte <levitte at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/11526)

commit 7a09fab2b3d201062a2cc07c1a40d09d61ea31bd
Author: aSoujyuTanaka <soujyu.tanaka at access-company.com>
Date:   Sun Apr 12 03:58:44 2020 +0900

    Disable optimiization of BN_num_bits_word() for VS2005 ARM compiler due to
    its miscompilation of the function.
    https://mta.openssl.org/pipermail/openssl-users/2018-August/008465.html
    
    Reviewed-by: Mark J. Cox <mark at awe.com>
    Reviewed-by: Richard Levitte <levitte at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/11526)

commit 6c2a56beec847da18e5ac60a30219f0dea39baf9
Author: aSoujyuTanaka <soujyu.tanaka at access-company.com>
Date:   Sun Apr 12 03:58:02 2020 +0900

    Changed uintptr_t to size_t. WinCE6 doesn't seem it have the definition.
    
    Reviewed-by: Mark J. Cox <mark at awe.com>
    Reviewed-by: Richard Levitte <levitte at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/11526)

-----------------------------------------------------------------------

Summary of changes:
 Configurations/10-main.conf          |  6 +++---
 Configurations/windows-makefile.tmpl |  4 ++--
 crypto/bn/bn_lib.c                   | 12 ++++++++++++
 crypto/dso/dso_win32.c               |  4 ++--
 crypto/o_str.c                       |  2 +-
 crypto/o_time.c                      |  2 +-
 crypto/rand/randfile.c               |  2 +-
 e_os.h                               |  2 +-
 include/openssl/e_os2.h              |  2 +-
 9 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 5baab6f306..895317dbb6 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -1417,9 +1417,9 @@ my %targets = (
             }
             push @ex_libs, '$(PORTSDK_LIBPATH)/portlib.lib'
                 if (defined(env('PORTSDK_LIBPATH')));
-            push @ex_libs, ' /nodefaultlib coredll.lib corelibc.lib'
-                if (env('TARGETCPU') eq "X86");
-            return @ex_libs;
+            push @ex_libs, '/nodefaultlib coredll.lib corelibc.lib'
+                if (env('TARGETCPU') =~ /^X86|^ARMV4[IT]/);
+            return join(" ", @ex_libs);
         }),
     },
 
diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl
index 107d0dc183..c2507a6508 100644
--- a/Configurations/windows-makefile.tmpl
+++ b/Configurations/windows-makefile.tmpl
@@ -264,8 +264,8 @@ CNF_CPPFLAGS={- our $cppfags2 =
                     join(' ', $target{cppflags} || (),
                               (map { '-D'.quotify1($_) } @{$target{defines}},
                                                          @{$config{defines}}),
-                              (map { '-I'.quotify1($_) } @{$target{includes}},
-                                                         @{$config{includes}}),
+                              (map { '-I'.'"'.$_.'"' } @{$target{includes}},
+                                                       @{$config{includes}}),
                               @{$config{cppflags}}) -}
 CNF_CFLAGS={- join(' ', $target{cflags} || (),
                         @{$config{cflags}}) -}
diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c
index 57783e47d8..13a52ccb29 100644
--- a/crypto/bn/bn_lib.c
+++ b/crypto/bn/bn_lib.c
@@ -88,6 +88,15 @@ const BIGNUM *BN_value_one(void)
     return &const_one;
 }
 
+/*
+ * Old Visual Studio ARM compiler miscompiles BN_num_bits_word()
+ * https://mta.openssl.org/pipermail/openssl-users/2018-August/008465.html
+ */
+#if defined(_MSC_VER) && defined(_ARM_) && defined(_WIN32_WCE) \
+    && _MSC_VER>=1400 && _MSC_VER<1501
+# define MS_BROKEN_BN_num_bits_word
+# pragma optimize("", off)
+#endif
 int BN_num_bits_word(BN_ULONG l)
 {
     BN_ULONG x, mask;
@@ -132,6 +141,9 @@ int BN_num_bits_word(BN_ULONG l)
 
     return bits;
 }
+#ifdef MS_BROKEN_BN_num_bits_word
+# pragma optimize("", on)
+#endif
 
 /*
  * This function still leaks `a->dmax`: it's caller's responsibility to
diff --git a/crypto/dso/dso_win32.c b/crypto/dso/dso_win32.c
index 49e7100c4e..1472140e92 100644
--- a/crypto/dso/dso_win32.c
+++ b/crypto/dso/dso_win32.c
@@ -567,8 +567,8 @@ static int win32_pathbyaddr(void *addr, char *path, int sz)
 
     /* Enumerate the modules to find one which includes me. */
     do {
-        if ((uintptr_t) addr >= (uintptr_t) me32.modBaseAddr &&
-            (uintptr_t) addr < (uintptr_t) (me32.modBaseAddr + me32.modBaseSize)) {
+        if ((size_t) addr >= (size_t) me32.modBaseAddr &&
+            (size_t) addr < (size_t) (me32.modBaseAddr + me32.modBaseSize)) {
             (*close_snap) (hModuleSnap);
             FreeLibrary(dll);
 # ifdef _WIN32_WCE
diff --git a/crypto/o_str.c b/crypto/o_str.c
index 8aa1a2a4dd..cfc401427d 100644
--- a/crypto/o_str.c
+++ b/crypto/o_str.c
@@ -287,7 +287,7 @@ char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen)
 
 int openssl_strerror_r(int errnum, char *buf, size_t buflen)
 {
-#if defined(_MSC_VER) && _MSC_VER>=1400
+#if defined(_MSC_VER) && _MSC_VER>=1400 && !defined(_WIN32_WCE)
     return !strerror_s(buf, buflen, errnum);
 #elif defined(_GNU_SOURCE)
     char *err;
diff --git a/crypto/o_time.c b/crypto/o_time.c
index f0e3e472e0..695f5c2938 100644
--- a/crypto/o_time.c
+++ b/crypto/o_time.c
@@ -41,7 +41,7 @@ struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result)
     if (gmtime_r(timer, result) == NULL)
         return NULL;
     ts = result;
-#elif defined (OPENSSL_SYS_WINDOWS) && defined(_MSC_VER) && _MSC_VER >= 1400
+#elif defined (OPENSSL_SYS_WINDOWS) && defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(_WIN32_WCE)
     if (gmtime_s(result, timer))
         return NULL;
     ts = result;
diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c
index 7dde54b187..cbc2720918 100644
--- a/crypto/rand/randfile.c
+++ b/crypto/rand/randfile.c
@@ -26,7 +26,7 @@
 #ifndef OPENSSL_NO_POSIX_IO
 # include <sys/stat.h>
 # include <fcntl.h>
-# ifdef _WIN32
+# if defined(_WIN32) && !defined(_WIN32_WCE)
 #  include <windows.h>
 #  include <io.h>
 #  define stat    _stat
diff --git a/e_os.h b/e_os.h
index d354c6950c..c035568464 100644
--- a/e_os.h
+++ b/e_os.h
@@ -258,7 +258,7 @@ extern FILE *_imp___iob;
 # if defined(OPENSSL_SYS_WINDOWS)
 #  define strcasecmp _stricmp
 #  define strncasecmp _strnicmp
-#  if (_MSC_VER >= 1310)
+#  if (_MSC_VER >= 1310) && !defined(_WIN32_WCE)
 #   define open _open
 #   define fdopen _fdopen
 #   define close _close
diff --git a/include/openssl/e_os2.h b/include/openssl/e_os2.h
index 982dd2b8a7..aab4ef38a7 100644
--- a/include/openssl/e_os2.h
+++ b/include/openssl/e_os2.h
@@ -220,7 +220,7 @@ typedef UINT64 uint64_t;
 #  undef OPENSSL_NO_INTTYPES_H
 /* Because the specs say that inttypes.h includes stdint.h if present */
 #  undef OPENSSL_NO_STDINT_H
-# elif defined(_MSC_VER) && _MSC_VER<=1500
+# elif defined(_MSC_VER) && _MSC_VER<1600
 /*
  * minimally required typdefs for systems not supporting inttypes.h or
  * stdint.h: currently just older VC++


More information about the openssl-commits mailing list