[openssl-commits] [openssl] master update
Matt Caswell
matt at openssl.org
Wed May 4 12:43:56 UTC 2016
The branch master has been updated
via ad9a05621ac75b6b9db1e8856d7f434276b1a7af (commit)
from d5975c8d5a171551dd42ffa18ca12e84f29ad106 (commit)
- Log -----------------------------------------------------------------
commit ad9a05621ac75b6b9db1e8856d7f434276b1a7af
Author: Matt Caswell <matt at openssl.org>
Date: Wed May 4 10:38:02 2016 +0100
Handle malloc failures in BIO_accept
The old BIO_accept() function can encounter errors during malloc. We need
to ensure we properly clean up if that occurs.
GH Issue #817
Reviewed-by: Richard Levitte <levitte at openssl.org>
-----------------------------------------------------------------------
Summary of changes:
crypto/bio/b_sock.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/crypto/bio/b_sock.c b/crypto/bio/b_sock.c
index 071acda..dc14a1b 100644
--- a/crypto/bio/b_sock.c
+++ b/crypto/bio/b_sock.c
@@ -311,10 +311,20 @@ int BIO_accept(int sock, char **ip_port)
if (ip_port != NULL) {
char *host = BIO_ADDR_hostname_string(&res, 1);
char *port = BIO_ADDR_service_string(&res, 1);
- *ip_port = OPENSSL_zalloc(strlen(host) + strlen(port) + 2);
- strcpy(*ip_port, host);
- strcat(*ip_port, ":");
- strcat(*ip_port, port);
+ if (host != NULL && port != NULL)
+ *ip_port = OPENSSL_zalloc(strlen(host) + strlen(port) + 2);
+ else
+ *ip_port = NULL;
+
+ if (*ip_port == NULL) {
+ BIOerr(BIO_F_BIO_ACCEPT, ERR_R_MALLOC_FAILURE);
+ BIO_closesocket(ret);
+ ret = (int)INVALID_SOCKET;
+ } else {
+ strcpy(*ip_port, host);
+ strcat(*ip_port, ":");
+ strcat(*ip_port, port);
+ }
OPENSSL_free(host);
OPENSSL_free(port);
}
More information about the openssl-commits
mailing list