Fix potential memory leak in BIO_get_accept_socket()
When BIO_parse_hostserv() fails it may still have allocated memory, yet this memory is not freed. Fix it by jumping to the err label. Reviewed-by: Viktor Dukhovni <viktor@openssl.org> Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/25817)
This commit is contained in:
parent
0baa3ac736
commit
32476957ea
@ -571,8 +571,13 @@ int BIO_parse_hostserv(const char *hostserv, char **host, char **service,
|
||||
*service = NULL;
|
||||
} else {
|
||||
*service = OPENSSL_strndup(p, pl);
|
||||
if (*service == NULL)
|
||||
if (*service == NULL) {
|
||||
if (h != NULL && host != NULL) {
|
||||
OPENSSL_free(*host);
|
||||
*host = NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -259,7 +259,7 @@ int BIO_get_accept_socket(char *host, int bind_mode)
|
||||
return INVALID_SOCKET;
|
||||
|
||||
if (BIO_sock_init() != 1)
|
||||
return INVALID_SOCKET;
|
||||
goto err;
|
||||
|
||||
if (BIO_lookup(h, p, BIO_LOOKUP_SERVER, AF_UNSPEC, SOCK_STREAM, &res) != 0)
|
||||
goto err;
|
||||
|
Loading…
x
Reference in New Issue
Block a user