Commit 66e4a894 authored by Pavel Kopyl's avatar Pavel Kopyl Committed by Richard Levitte
Browse files

Fix memory leaks in CA related functions.



(cherry picked from commit aebd0e5c)

Reviewed-by: default avatarAndy Polyakov <appro@openssl.org>
Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6238)
parent f54b665e
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1176,10 +1176,13 @@ int MAIN(int argc, char **argv)
            if (j > 0) {
                total_done++;
                BIO_printf(bio_err, "\n");
                if (!BN_add_word(serial, 1))
                if (!BN_add_word(serial, 1)) {
                    X509_free(x);
                    goto err;
                }
                if (!sk_X509_push(cert_sk, x)) {
                    BIO_printf(bio_err, "Memory allocation failure\n");
                    X509_free(x);
                    goto err;
                }
            }
+1 −0
Original line number Diff line number Diff line
@@ -277,6 +277,7 @@ static int check(X509_STORE *ctx, char *file,
    X509_STORE_set_flags(ctx, vflags);
    if (!X509_STORE_CTX_init(csc, ctx, x, uchain)) {
        ERR_print_errors(bio_err);
        X509_STORE_CTX_free(csc);
        goto end;
    }
    if (tchain)
+2 −0
Original line number Diff line number Diff line
@@ -290,6 +290,8 @@ CONF_VALUE *_CONF_new_section(CONF *conf, const char *section)

    vv = lh_CONF_VALUE_insert(conf->data, v);
    OPENSSL_assert(vv == NULL);
    if (lh_CONF_VALUE_error(conf->data) > 0)
        goto err;
    ok = 1;
 err:
    if (!ok) {
+4 −2
Original line number Diff line number Diff line
@@ -188,8 +188,10 @@ void engine_cleanup_add_last(ENGINE_CLEANUP_CB *cb)
    if (!int_cleanup_check(1))
        return;
    item = int_cleanup_item(cb);
    if (item)
        sk_ENGINE_CLEANUP_ITEM_push(cleanup_stack, item);
    if (item != NULL) {
        if (sk_ENGINE_CLEANUP_ITEM_push(cleanup_stack, item) <= 0)
            OPENSSL_free(item);
    }
}

/* The API function that performs all cleanup */