close socket in failure cases too
authortedu <tedu@openbsd.org>
Wed, 23 Apr 2014 20:22:37 +0000 (20:22 +0000)
committertedu <tedu@openbsd.org>
Wed, 23 Apr 2014 20:22:37 +0000 (20:22 +0000)
lib/libcrypto/bio/b_sock.c
lib/libssl/src/crypto/bio/b_sock.c

index a7791b3..e5f4239 100644 (file)
@@ -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;
index a7791b3..e5f4239 100644 (file)
@@ -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;