From 36cac5570ff0541f62fafbb42eec54ddbf584ca4 Mon Sep 17 00:00:00 2001 From: Kyle Evans Date: Fri, 10 Jan 2020 14:40:04 +0000 Subject: [PATCH] inetd: free WITHOUT_INET6_SUPPORT build of warnings If inetd is compiled without inet6 support, we need to error out on rpc+inet6 services rather than attempting to call into rpc bits with an uninitialized netid. v4bind is only used with INET6 support, so move it under the proper #ifdefs with v6bind. Reported by: Pavel Timofeev MFC after: 3 days --- usr.sbin/inetd/inetd.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/usr.sbin/inetd/inetd.c b/usr.sbin/inetd/inetd.c index f8b95b3eb1b..02a9a9f0df6 100644 --- a/usr.sbin/inetd/inetd.c +++ b/usr.sbin/inetd/inetd.c @@ -1360,6 +1360,15 @@ setsockopt(fd, SOL_SOCKET, opt, (char *)&on, sizeof (on)) sock.sin_port = sep->se_ctrladdr6.sin6_port; } } +#else + else { + syslog(LOG_ERR, + "%s/%s: inetd compiled without inet6 support\n", + sep->se_service, sep->se_proto); + (void) close(sep->se_fd); + sep->se_fd = -1; + return; + } #endif if (debug) print_service("REG ", sep); @@ -1611,8 +1620,8 @@ getconfigent(void) #ifdef IPSEC char *policy; #endif - int v4bind; #ifdef INET6 + int v4bind; int v6bind; #endif int i; @@ -1622,8 +1631,8 @@ getconfigent(void) policy = NULL; #endif more: - v4bind = 0; #ifdef INET6 + v4bind = 0; v6bind = 0; #endif while ((cp = nextline(fconfig)) != NULL) { @@ -1787,7 +1796,9 @@ more: #endif if (sep->se_proto[strlen(sep->se_proto) - 1] == '4') { sep->se_proto[strlen(sep->se_proto) - 1] = '\0'; +#ifdef INET6 v4bind = 1; +#endif continue; } /* illegal version num */