mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-04-30 03:34:39 +00: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
|
#else
|
||||||
struct servent se_fallback = { NULL, NULL, 0, NULL };
|
struct servent se_fallback = { NULL, NULL, 0, NULL };
|
||||||
#endif
|
#endif
|
||||||
char *proto = NULL;
|
|
||||||
|
|
||||||
CRYPTO_THREAD_run_once(&bio_lookup_init, do_bio_lookup_init);
|
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) {
|
if (service == NULL) {
|
||||||
se_fallback.s_port = 0;
|
se_fallback.s_port = 0;
|
||||||
se_fallback.s_proto = proto;
|
se_fallback.s_proto = NULL;
|
||||||
se = &se_fallback;
|
se = &se_fallback;
|
||||||
} else {
|
} else {
|
||||||
char *endp = NULL;
|
char *endp = NULL;
|
||||||
long portnum = strtol(service, &endp, 10);
|
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'
|
if (endp != service && *endp == '\0'
|
||||||
&& portnum > 0 && portnum < 65536) {
|
&& portnum > 0 && portnum < 65536) {
|
||||||
@ -790,14 +799,6 @@ int BIO_lookup(const char *host, const char *service,
|
|||||||
se_fallback.s_proto = proto;
|
se_fallback.s_proto = proto;
|
||||||
se = &se_fallback;
|
se = &se_fallback;
|
||||||
} else if (endp == service) {
|
} else if (endp == service) {
|
||||||
switch (socktype) {
|
|
||||||
case SOCK_STREAM:
|
|
||||||
proto = "tcp";
|
|
||||||
break;
|
|
||||||
case SOCK_DGRAM:
|
|
||||||
proto = "udp";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
se = getservbyname(service, proto);
|
se = getservbyname(service, proto);
|
||||||
|
|
||||||
if (se == NULL) {
|
if (se == NULL) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user