In fetch_resolve(), if the port number or service name is included in

the host argument (e.g. "www.freebsd.org:443"), the service pointer,
which is supposed to point to the port or service part, instead points
to the separator, causing getaddrinfo() to fail.

Note that I have not been able to trigger this bug with fetch(1), nor
do I believe it is possible, as libfetch always parses the host:port
specification itself.  I discovered it when I copied fetch_resolve()
into an unrelated project.

MFC after:	3 days
This commit is contained in:
Dag-Erling Smørgrav 2017-08-18 18:20:36 +00:00
parent 208b7e81bf
commit 3954b52f28

View File

@ -291,7 +291,7 @@ fetch_resolve(const char *addr, int port, int af)
goto syserr;
service = sbuf;
} else if (*sep != '\0') {
service = sep;
service = sep + 1;
} else {
service = NULL;
}