Commit 7d6df9e9 authored by Pauli's avatar Pauli Committed by Rich Salz
Browse files

Fix threading issue that at best will leak memory



The problem is the checking in policy_cache_set, there is a race
condition between the null check and obtaining the lock.  The fix is in
policy_cache_new to detect if the creation has happened already.

Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
parent b38c43f7
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -78,6 +78,9 @@ static int policy_cache_new(X509 *x)
    CERTIFICATEPOLICIES *ext_cpols = NULL;
    POLICY_MAPPINGS *ext_pmaps = NULL;
    int i;

    if (x->policy_cache != NULL)
        return 1;
    cache = OPENSSL_malloc(sizeof(*cache));
    if (cache == NULL)
        return 0;