summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Unangst <tedu@cvs.openbsd.org>2014-04-23 20:22:38 +0000
committerTed Unangst <tedu@cvs.openbsd.org>2014-04-23 20:22:38 +0000
commit52c42d726ec5d726e91d7768b1a1cf857517f2ed (patch)
treeaa0cafa758c42d5028083b0d1894f9fcfae291ff
parent7ff5a85fba5907fc3c3f7b409cf59f8b9493043c (diff)
close socket in failure cases too
-rw-r--r--lib/libssl/src/crypto/bio/b_sock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/libssl/src/crypto/bio/b_sock.c b/lib/libssl/src/crypto/bio/b_sock.c
index a7791b39e2e..e5f42398df6 100644
--- a/lib/libssl/src/crypto/bio/b_sock.c
+++ b/lib/libssl/src/crypto/bio/b_sock.c
@@ -535,6 +535,7 @@ BIO_accept(int sock, char **addr)
if (p) {
*p = '\0';
if (!(tmp = realloc(p, nl))) {
+ close(ret);
ret = -1;
free(p);
*addr = NULL;
@@ -546,6 +547,7 @@ BIO_accept(int sock, char **addr)
p = malloc(nl);
}
if (p == NULL) {
+ close(ret);
ret = -1;
BIOerr(BIO_F_BIO_ACCEPT, ERR_R_MALLOC_FAILURE);
goto end;
@@ -561,6 +563,7 @@ BIO_accept(int sock, char **addr)
port = ntohs(sa.from.sa_in.sin_port);
if (*addr == NULL) {
if ((p = malloc(24)) == NULL) {
+ close(ret);
ret = -1;
BIOerr(BIO_F_BIO_ACCEPT, ERR_R_MALLOC_FAILURE);
goto end;