]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
threads_win: fix improper cast to long * instead of LONG *
authorGeorgi Valkov <gvalkov@gmail.com>
Fri, 19 Jul 2024 21:37:21 +0000 (00:37 +0300)
committerTomas Mraz <tomas@openssl.org>
Thu, 5 Sep 2024 15:09:50 +0000 (17:09 +0200)
InterlockedExchangeAdd expects arguments of type LONG *, LONG
but the int arguments were improperly cast to long *, long

Note:
- LONG is always 32 bit
- long is 32 bit on Win32 VC x86/x64 and MingW-W64
- long is 64 bit on cygwin64

Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24941)

crypto/threads_win.c

index de5c56d3d6d770d234a6d8dd2298ecfc7e02ae5e..bdbd4d381f0c33df430f511ad46bf36cc4989432 100644 (file)
@@ -625,7 +625,7 @@ int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b)
 
 int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock)
 {
-    *ret = (int)InterlockedExchangeAdd((long volatile *)val, (long)amount)
+    *ret = (int)InterlockedExchangeAdd((LONG volatile *)val, (LONG)amount)
         + amount;
     return 1;
 }