]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Avoid using union wrt. SystemTimeToFileTime
authorTee KOBAYASHI <xtkoba@gmail.com>
Sun, 26 Jun 2022 08:40:29 +0000 (17:40 +0900)
committerPauli <pauli@openssl.org>
Wed, 29 Jun 2022 02:11:17 +0000 (12:11 +1000)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18660)

crypto/bio/bss_dgram.c

index 4b363829af1d19c4a2386a21f85da0096a63e905..7201c6ae6336d8e7346b6667b23a6909192bcc33 100644 (file)
@@ -1900,20 +1900,19 @@ static void get_current_time(struct timeval *t)
 {
 # if defined(_WIN32)
     SYSTEMTIME st;
-    union {
-        unsigned __int64 ul;
-        FILETIME ft;
-    } now;
+    unsigned __int64 now_ul;
+    FILETIME now_ft;
 
     GetSystemTime(&st);
-    SystemTimeToFileTime(&st, &now.ft);
+    SystemTimeToFileTime(&st, &now_ft);
+    now_ul = ((unsigned __int64)now_ft.dwHighDateTime << 32) | now_ft.dwLowDateTime;
 #  ifdef  __MINGW32__
-    now.ul -= 116444736000000000ULL;
+    now_ul -= 116444736000000000ULL;
 #  else
-    now.ul -= 116444736000000000UI64; /* re-bias to 1/1/1970 */
+    now_ul -= 116444736000000000UI64; /* re-bias to 1/1/1970 */
 #  endif
-    t->tv_sec = (long)(now.ul / 10000000);
-    t->tv_usec = ((int)(now.ul % 10000000)) / 10;
+    t->tv_sec = (long)(now_ul / 10000000);
+    t->tv_usec = ((int)(now_ul % 10000000)) / 10;
 # else
     gettimeofday(t, NULL);
 # endif