mirror of
https://github.com/openssl/openssl.git
synced 2024-11-21 01:15:20 +08:00
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: Richard Levitte <levitte@openssl.org>
This commit is contained in:
parent
df0f275922
commit
b0b6ba2d11
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user