Commit efbcbc3612 for openssl.org

commit efbcbc3612b074ec6d00ce00fa9535548d2a6517
Author: Deven Dighe <dvd8106@g.rit.edu>
Date:   Thu Mar 19 09:54:21 2026 -0400

    crypto/threads_win.c: type casted destination of InterlockedExchange{,64} calls

    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)

diff --git a/crypto/threads_win.c b/crypto/threads_win.c
index db24796009..525c8d432e 100644
--- a/crypto/threads_win.c
+++ b/crypto/threads_win.c
@@ -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
 }