Why? Just do not select FEATURE_ETC_SERVICES.
On Wed, Aug 25, 2021 at 10:14 PM Sergey Ponomarev <[email protected]> wrote: > > Don't lookup /etc/services for well known ports. > In the commit was added a new function bb_lookup_std_port(). > The function is in fact not needed and we may assume that it is always > disabled. > Nobody changes ports in the /etc/services i.e. if we know a port it will > always remain the same. > The file can be used only by telnet client and /etc/inetd.conf configuration > because they may use port names. > You may want to change port numbers there only to configure a daemon. > But this doesn't make sense because it will break a client when it will try > to call an external daemon which remains on standard port. > > For example if you change http to 8080 to make httpd use the port then this > will break wget if it tries to call an external http url. > So clients like wget must not use port numbers from /etc/services. > Even if we remove the lookup from clients we still can't change the port > because inted and telnet may do need to make the lookup. > I.e. they are clients which don't know for sure which port must be used. > > Signed-off-by: Sergey Ponomarev <[email protected]> > --- > include/libbb.h | 5 ----- > libbb/Config.src | 12 ------------ > networking/isrv_identd.c | 3 +-- > networking/telnet.c | 3 +-- > networking/wget.c | 8 ++++---- > util-linux/rdate.c | 2 +- > 6 files changed, 7 insertions(+), 26 deletions(-) > > diff --git a/include/libbb.h b/include/libbb.h > index 7d6ab4a93..e000ed8b0 100644 > --- a/include/libbb.h > +++ b/include/libbb.h > @@ -722,11 +722,6 @@ int setsockopt_bindtodevice(int fd, const char *iface) > FAST_FUNC; > int bb_getsockname(int sockfd, void *addr, socklen_t addrlen) FAST_FUNC; > /* NB: returns port in host byte order */ > unsigned bb_lookup_port(const char *port, const char *protocol, unsigned > default_port) FAST_FUNC; > -#if ENABLE_FEATURE_ETC_SERVICES > -# define bb_lookup_std_port(portstr, protocol, portnum) > bb_lookup_port(portstr, protocol, portnum) > -#else > -# define bb_lookup_std_port(portstr, protocol, portnum) (portnum) > -#endif > typedef struct len_and_sockaddr { > socklen_t len; > union { > diff --git a/libbb/Config.src b/libbb/Config.src > index f97de8ef7..886725704 100644 > --- a/libbb/Config.src > +++ b/libbb/Config.src > @@ -76,18 +76,6 @@ config FEATURE_ETC_NETWORKS > a rarely used feature which allows you to use names > instead of IP/mask pairs in route command. > > -config FEATURE_ETC_SERVICES > - bool "Consult /etc/services even for well-known ports" > - default n > - help > - Look up e.g. "telnet" and "http" in /etc/services file > - instead of assuming ports 23 and 80. > - This is almost never necessary (everybody uses standard ports), > - and it makes sense to avoid reading this file. > - If you disable this option, in the cases where port is explicitly > - specified as a service name (e.g. "telnet HOST PORTNAME"), > - it will still be looked up in /etc/services. > - > config FEATURE_EDITING > bool "Command line editing" > default y > diff --git a/networking/isrv_identd.c b/networking/isrv_identd.c > index f564d604a..5bacfde94 100644 > --- a/networking/isrv_identd.c > +++ b/networking/isrv_identd.c > @@ -158,8 +158,7 @@ int fakeidentd_main(int argc UNUSED_PARAM, char **argv) > > fd = 0; > if (!(opt & OPT_inetdwait)) { > - fd = create_and_bind_stream_or_die(bind_address, > - bb_lookup_std_port("identd", "tcp", 113)); > + fd = create_and_bind_stream_or_die(bind_address, 113); > xlisten(fd, 5); > } > > diff --git a/networking/telnet.c b/networking/telnet.c > index 7a0253525..dc088721b 100644 > --- a/networking/telnet.c > +++ b/networking/telnet.c > @@ -649,8 +649,7 @@ int telnet_main(int argc UNUSED_PARAM, char **argv) > if (!*argv) > bb_show_usage(); > host = *argv++; > - port = *argv ? bb_lookup_port(*argv++, "tcp", 23) > - : bb_lookup_std_port("telnet", "tcp", 23); > + port = *argv ? bb_lookup_port(*argv++, "tcp", 23) : 23; > if (*argv) /* extra params?? */ > bb_show_usage(); > > diff --git a/networking/wget.c b/networking/wget.c > index 6a9604421..46c470c02 100644 > --- a/networking/wget.c > +++ b/networking/wget.c > @@ -534,19 +534,19 @@ static void parse_url(const char *src_url, struct > host_info *h) > h->host = p + 3; > #if ENABLE_FEATURE_WGET_FTP > if (strcmp(url, P_FTP) == 0) { > - h->port = bb_lookup_std_port(P_FTP, "tcp", 21); > + h->port = 21; > h->protocol = P_FTP; > } else > #endif > #if FTPS_SUPPORTED > if (strcmp(url, P_FTPS) == 0) { > - h->port = bb_lookup_std_port(P_FTPS, "tcp", 990); > + h->port = 990; > h->protocol = P_FTPS; > } else > #endif > #if SSL_SUPPORTED > if (strcmp(url, P_HTTPS) == 0) { > - h->port = bb_lookup_std_port(P_HTTPS, "tcp", 443); > + h->port = 443; > h->protocol = P_HTTPS; > } else > #endif > @@ -560,7 +560,7 @@ static void parse_url(const char *src_url, struct > host_info *h) > // GNU wget is user-friendly and falls back to http:// > h->host = url; > http: > - h->port = bb_lookup_std_port(P_HTTP, "tcp", 80); > + h->port = 80; > } > > // FYI: > diff --git a/util-linux/rdate.c b/util-linux/rdate.c > index 9b80141c9..68d9a7a46 100644 > --- a/util-linux/rdate.c > +++ b/util-linux/rdate.c > @@ -45,7 +45,7 @@ static time_t askremotedate(const char *host) > alarm(10); > signal(SIGALRM, socket_timeout); > > - fd = create_and_connect_stream_or_die(host, > bb_lookup_std_port("time", "tcp", 37)); > + fd = create_and_connect_stream_or_die(host, 37); > > if (safe_read(fd, &nett, 4) != 4) /* read time from server */ > bb_error_msg_and_die("%s: %s", host, "short read"); > -- > 2.30.2 > > _______________________________________________ > busybox mailing list > [email protected] > http://lists.busybox.net/mailman/listinfo/busybox _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
