Commit 562d2a137a for openssl.org
commit 562d2a137a53faac1f2d59e23e3eb458af2edac7
Author: Neil Horman <nhorman@openssl.org>
Date: Fri Jun 26 13:18:49 2026 -0400
Remove CRYPTO_GET_REF
This function should never have existed. Its a TOCTOU waiting to
happen. Now that we've eliminated all internal uses, and given that its
an internal function, send it to a nice farm upstate, where it can run
and play with all the other functions that shouldn't have been.
Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Norbert Pocs <norbertp@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Bob Beck <beck@openssl.org>
MergeDate: Sat Jul 4 16:47:16 2026
(Merged from https://github.com/openssl/openssl/pull/31750)
diff --git a/include/internal/refcount.h b/include/internal/refcount.h
index 11f207f881..2e7dedf2c3 100644
--- a/include/internal/refcount.h
+++ b/include/internal/refcount.h
@@ -68,12 +68,6 @@ static inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
return 1;
}
-static inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
-{
- *ret = atomic_load_explicit(&refcnt->val, memory_order_acquire);
- return 1;
-}
-
#elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) && __GCC_ATOMIC_INT_LOCK_FREE > 0
#define HAVE_ATOMICS 1
@@ -96,12 +90,6 @@ static __inline__ int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
return 1;
}
-static __inline__ int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
-{
- *ret = __atomic_load_n(&refcnt->val, __ATOMIC_RELAXED);
- return 1;
-}
-
#elif defined(__ICL) && defined(_WIN32)
#define HAVE_ATOMICS 1
@@ -121,12 +109,6 @@ static __inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
return 1;
}
-static __inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
-{
- *ret = _InterlockedExchangeAdd((void *)&refcnt->val, 0);
- return 1;
-}
-
#elif defined(_MSC_VER) && _MSC_VER >= 1200
#define HAVE_ATOMICS 1
@@ -153,12 +135,6 @@ static __inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
return 1;
}
-static __inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
-{
- *ret = _InterlockedExchangeAdd_acq((void *)&refcnt->val, 0);
- return 1;
-}
-
#else
#pragma intrinsic(_InterlockedExchangeAdd)
@@ -174,12 +150,6 @@ static __inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
return 1;
}
-static __inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret)
-{
- *ret = _InterlockedExchangeAdd(&refcnt->val, 0);
- return 1;
-}
-
#endif
#endif
@@ -213,12 +183,6 @@ static ossl_unused ossl_inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt,
return CRYPTO_atomic_add(&refcnt->val, -1, ret, refcnt->lock);
}
-static ossl_unused ossl_inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt,
- int *ret)
-{
- return CRYPTO_atomic_load_int(&refcnt->val, ret, refcnt->lock);
-}
-
#define CRYPTO_NEW_FREE_DEFINED 1
static ossl_unused ossl_inline int CRYPTO_NEW_REF(CRYPTO_REF_COUNT *refcnt, int n)
{
@@ -255,13 +219,6 @@ static ossl_unused ossl_inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt,
return 1;
}
-static ossl_unused ossl_inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt,
- int *ret)
-{
- *ret = refcnt->val;
- return 1;
-}
-
#endif /* OPENSSL_THREADS */
#endif