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

Fix memory leaks in CA related functions.

parent c4fa1f7f
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -934,10 +934,13 @@ end_of_options:
            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 end;
                }
                if (!sk_X509_push(cert_sk, x)) {
                    BIO_printf(bio_err, "Memory allocation failure\n");
                    X509_free(x);
                    goto end;
                }
            }
+1 −0
Original line number Diff line number Diff line
@@ -225,6 +225,7 @@ static int check(X509_STORE *ctx, const char *file,

    X509_STORE_set_flags(ctx, vflags);
    if (!X509_STORE_CTX_init(csc, ctx, x, uchain)) {
        X509_STORE_CTX_free(csc);
        printf("error %s: X.509 store context initialization failed\n",
               (file == NULL) ? "stdin" : file);
        goto end;
+3 −1
Original line number Diff line number Diff line
@@ -204,12 +204,14 @@ CONF_VALUE *_CONF_new_section(CONF *conf, const char *section)
    v->value = (char *)sk;

    vv = lh_CONF_VALUE_insert(conf->data, v);
    if (vv != NULL)
    if (vv != NULL || lh_CONF_VALUE_error(conf->data) > 0)
        goto err;
    return v;

 err:
    sk_CONF_VALUE_free(sk);
    if (v != NULL)
        OPENSSL_free(v->section);
    OPENSSL_free(v);
    return NULL;
}
+4 −2
Original line number Diff line number Diff line
@@ -154,8 +154,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 */