Commit 2403153c authored by Bernd Edlinger's avatar Bernd Edlinger
Browse files

Fix error handling in X509_chain_up_ref



Reviewed-by: default avatarKurt Roeckx <kurt@roeckx.be>
Reviewed-by: default avatarTomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/9614)

(cherry picked from commit cae665dfa6ccec743a7f39cf80676d7d2d787e56)
parent 4faaf0f4
Loading
Loading
Loading
Loading
+9 −1
Original line number Original line Diff line number Diff line
@@ -450,9 +450,17 @@ STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain)
    STACK_OF(X509) *ret;
    STACK_OF(X509) *ret;
    int i;
    int i;
    ret = sk_X509_dup(chain);
    ret = sk_X509_dup(chain);
    if (ret == NULL)
        return NULL;
    for (i = 0; i < sk_X509_num(ret); i++) {
    for (i = 0; i < sk_X509_num(ret); i++) {
        X509 *x = sk_X509_value(ret, i);
        X509 *x = sk_X509_value(ret, i);
        X509_up_ref(x);
        if (!X509_up_ref(x))
            goto err;
    }
    }
    return ret;
    return ret;
 err:
    while (i-- > 0)
        X509_free (sk_X509_value(ret, i));
    sk_X509_free(ret);
    return NULL;
}
}