Commit b0b6ba2d authored by Matt Caswell's avatar Matt Caswell
Browse files

Don't leak memory on failure to create a mem BIO



During construction of a mem BIO we allocate some resources. If this
allocation fails we can end up leaking everything we have allocated so
far.

Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
parent df0f2759
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -150,17 +150,22 @@ static int mem_init(BIO *bi, unsigned long flags)
    BIO_BUF_MEM *bb = OPENSSL_zalloc(sizeof(*bb));

    if (bb == NULL)
        return(0);
    if ((bb->buf = BUF_MEM_new_ex(flags)) == NULL)
        return(0);
    if ((bb->readp = OPENSSL_zalloc(sizeof(*bb->readp))) == NULL)
        return(0);
        return 0;
    if ((bb->buf = BUF_MEM_new_ex(flags)) == NULL) {
        OPENSSL_free(bb);
        return 0;
    }
    if ((bb->readp = OPENSSL_zalloc(sizeof(*bb->readp))) == NULL) {
        BUF_MEM_free(bb->buf);
        OPENSSL_free(bb);
        return 0;
    }
    *bb->readp = *bb->buf;
    bi->shutdown = 1;
    bi->init = 1;
    bi->num = -1;
    bi->ptr = (char *)bb;
    return(1);
    return 1;
}

static int mem_new(BIO *bi)