]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
crypto/threads_win.c: type casted destination of InterlockedExchange{,64} calls
authorDeven Dighe <dvd8106@g.rit.edu>
Thu, 19 Mar 2026 13:54:21 +0000 (09:54 -0400)
committerEugene Syromiatnikov <esyr@openssl.org>
Sun, 22 Mar 2026 00:50:59 +0000 (01:50 +0100)
Explicitly cast dst argument of InterlockedExchange{,64} calls
in CRYPTO_atomic_store{,_int}() to LONG{64,} volatile *, respectively,
to work around incompatible pointer type errors on 64-bit MinGW builds.

Initially Reported by Splediferous.

[esyr: massaged the commit message a bit]

CLA: trivial
Resolves: https://github.com/openssl/openssl/issues/30451
Fixes: cc7195da3038 "Make FIPS self test state access atomic"
Fixes: 7e45ac6891ad "Add CRYPTO_atomic_store api"
add cast to LONG volatile * for InterlockedExchange

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Sun Mar 22 00:56:36 2026
(Merged from https://github.com/openssl/openssl/pull/30504)

crypto/threads_win.c

index db24796009846a13647d5ee06a586a6a83e640a8..525c8d432e6af651cd8193d16ae26a7244b6aa37 100644 (file)
@@ -710,7 +710,7 @@ int CRYPTO_atomic_store(uint64_t *dst, uint64_t val, CRYPTO_RWLOCK *lock)
 
     return 1;
 #else
-    InterlockedExchange64(dst, val);
+    InterlockedExchange64((LONG64 volatile *)dst, val);
     return 1;
 #endif
 }
@@ -743,7 +743,7 @@ int CRYPTO_atomic_store_int(int *dst, int val, CRYPTO_RWLOCK *lock)
 
     return 1;
 #else
-    InterlockedExchange(dst, val);
+    InterlockedExchange((LONG volatile *)dst, val);
     return 1;
 #endif
 }