summaryrefslogtreecommitdiffstats
path: root/crypto/bio
diff options
context:
space:
mode:
authorscott <scott.morgan@hibiscus-plc.com>2020-04-09 12:36:37 +0100
committerTomas Mraz <tmraz@fedoraproject.org>2020-04-14 11:57:26 +0200
commit5f62ff49a9fdc9079aa6e9aefaf2cee51d2f4455 (patch)
tree6f3690630ad093ceeb182986d702abadf353e069 /crypto/bio
parent369cef760364a88aafa68afd406328e20689b5e2 (diff)
BIO_do_accept: correct error return value
`BIO_do_accept` was returning incorrect values when unable to bind to a port. Fixes #7717 CLA: trivial Reviewed-by: Viktor Dukhovni <viktor@openssl.org> Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/11505) (cherry picked from commit 0437435a960123be1ced766d18d715f939698345)
Diffstat (limited to 'crypto/bio')
-rw-r--r--crypto/bio/bss_acpt.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/crypto/bio/bss_acpt.c b/crypto/bio/bss_acpt.c
index b38e47a592..5a2cb50dfc 100644
--- a/crypto/bio/bss_acpt.c
+++ b/crypto/bio/bss_acpt.c
@@ -222,10 +222,10 @@ static int acpt_state(BIO *b, BIO_ACCEPT *c)
break;
case ACPT_S_CREATE_SOCKET:
- ret = BIO_socket(BIO_ADDRINFO_family(c->addr_iter),
- BIO_ADDRINFO_socktype(c->addr_iter),
- BIO_ADDRINFO_protocol(c->addr_iter), 0);
- if (ret == (int)INVALID_SOCKET) {
+ s = BIO_socket(BIO_ADDRINFO_family(c->addr_iter),
+ BIO_ADDRINFO_socktype(c->addr_iter),
+ BIO_ADDRINFO_protocol(c->addr_iter), 0);
+ if (s == (int)INVALID_SOCKET) {
SYSerr(SYS_F_SOCKET, get_last_socket_error());
ERR_add_error_data(4,
"hostname=", c->param_addr,
@@ -233,9 +233,10 @@ static int acpt_state(BIO *b, BIO_ACCEPT *c)
BIOerr(BIO_F_ACPT_STATE, BIO_R_UNABLE_TO_CREATE_SOCKET);
goto exit_loop;
}
- c->accept_sock = ret;
- b->num = ret;
+ c->accept_sock = s;
+ b->num = s;
c->state = ACPT_S_LISTEN;
+ s = -1;
break;
case ACPT_S_LISTEN: