mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
Rearrange the use of 'proto' in BIO_lookup
'proto' wasn't properly used as a fallback in all appropriate cases. Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
parent
3eefcea116
commit
622c7e99a9
@ -742,7 +742,6 @@ int BIO_lookup(const char *host, const char *service,
|
||||
#else
|
||||
struct servent se_fallback = { NULL, NULL, 0, NULL };
|
||||
#endif
|
||||
char *proto = NULL;
|
||||
|
||||
CRYPTO_THREAD_run_once(&bio_lookup_init, do_bio_lookup_init);
|
||||
|
||||
@ -778,11 +777,21 @@ int BIO_lookup(const char *host, const char *service,
|
||||
|
||||
if (service == NULL) {
|
||||
se_fallback.s_port = 0;
|
||||
se_fallback.s_proto = proto;
|
||||
se_fallback.s_proto = NULL;
|
||||
se = &se_fallback;
|
||||
} else {
|
||||
char *endp = NULL;
|
||||
long portnum = strtol(service, &endp, 10);
|
||||
char *proto = NULL;
|
||||
|
||||
switch (socktype) {
|
||||
case SOCK_STREAM:
|
||||
proto = "tcp";
|
||||
break;
|
||||
case SOCK_DGRAM:
|
||||
proto = "udp";
|
||||
break;
|
||||
}
|
||||
|
||||
if (endp != service && *endp == '\0'
|
||||
&& portnum > 0 && portnum < 65536) {
|
||||
@ -790,14 +799,6 @@ int BIO_lookup(const char *host, const char *service,
|
||||
se_fallback.s_proto = proto;
|
||||
se = &se_fallback;
|
||||
} else if (endp == service) {
|
||||
switch (socktype) {
|
||||
case SOCK_STREAM:
|
||||
proto = "tcp";
|
||||
break;
|
||||
case SOCK_DGRAM:
|
||||
proto = "udp";
|
||||
break;
|
||||
}
|
||||
se = getservbyname(service, proto);
|
||||
|
||||
if (se == NULL) {
|
||||
|
Loading…
Reference in New Issue
Block a user