On Tue, Dec 29, 2020 at 04:20:04PM +0100, Sebastian Benoit wrote:
>
> More missing checks, outside of usr.sbin.
>
> Missing: isakmpd and ifconfig
> I have not yet looked at libc internal use, libpcap and regress/.
>
> ok?
Looks good to me.
> diff --git sbin/iked/parse.y sbin/iked/parse.y
> index aedbb74f3fd..b02ff55d4e7 100644
> --- sbin/iked/parse.y
> +++ sbin/iked/parse.y
> @@ -2166,7 +2166,8 @@ ifa_load(void)
> err(1, "ifa_load: getifaddrs");
>
> for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
> - if (!(ifa->ifa_addr->sa_family == AF_INET ||
> + if (ifa->ifa_addr == NULL ||
> + !(ifa->ifa_addr->sa_family == AF_INET ||
> ifa->ifa_addr->sa_family == AF_INET6 ||
> ifa->ifa_addr->sa_family == AF_LINK))
> continue;
> diff --git sbin/ipsecctl/parse.y sbin/ipsecctl/parse.y
> index d61f6d5e151..5121d8bb655 100644
> --- sbin/ipsecctl/parse.y
> +++ sbin/ipsecctl/parse.y
> @@ -1827,7 +1827,8 @@ ifa_load(void)
> err(1, "ifa_load: getifaddrs");
>
> for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
> - if (!(ifa->ifa_addr->sa_family == AF_INET ||
> + if (ifa->ifa_addr == NULL ||
> + !(ifa->ifa_addr->sa_family == AF_INET ||
> ifa->ifa_addr->sa_family == AF_INET6 ||
> ifa->ifa_addr->sa_family == AF_LINK))
> continue;
> diff --git sbin/pfctl/pfctl_parser.c sbin/pfctl/pfctl_parser.c
> index 32b14d8b4cb..164b0639a48 100644
> --- sbin/pfctl/pfctl_parser.c
> +++ sbin/pfctl/pfctl_parser.c
> @@ -1352,7 +1352,8 @@ ifa_load(void)
> err(1, "getifaddrs");
>
> for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
> - if (!(ifa->ifa_addr->sa_family == AF_INET ||
> + if (ifa->ifa_addr == NULL ||
> + !(ifa->ifa_addr->sa_family == AF_INET ||
> ifa->ifa_addr->sa_family == AF_INET6 ||
> ifa->ifa_addr->sa_family == AF_LINK))
> continue;
> diff --git sbin/route/route.c sbin/route/route.c
> index c13f5b6be07..e1d31902e98 100644
> --- sbin/route/route.c
> +++ sbin/route/route.c
> @@ -506,7 +506,8 @@ setsource(int argc, char **argv)
> for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
> if (if_nametoindex(ifa->ifa_name) != ifindex)
> continue;
> - if (!(ifa->ifa_addr->sa_family == AF_INET ||
> + if (ifa->ifa_addr == NULL ||
> + !(ifa->ifa_addr->sa_family == AF_INET ||
> ifa->ifa_addr->sa_family == AF_INET6))
> continue;
> if ((af != AF_UNSPEC) &&
> diff --git sbin/slaacd/frontend.c sbin/slaacd/frontend.c
> index 6bdfc92339d..0e877d03bdb 100644
> --- sbin/slaacd/frontend.c
> +++ sbin/slaacd/frontend.c
> @@ -584,6 +584,8 @@ update_autoconf_addresses(uint32_t if_index, char*
> if_name)
> for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
> if (strcmp(if_name, ifa->ifa_name) != 0)
> continue;
> + if (ifa->ifa_addr == NULL)
> + continue;
>
> if (ifa->ifa_addr->sa_family == AF_LINK)
> imsg_link_state.link_state =
> @@ -937,6 +939,8 @@ get_lladdr(char *if_name, struct ether_addr *mac, struct
> sockaddr_in6 *ll)
> for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
> if (strcmp(if_name, ifa->ifa_name) != 0)
> continue;
> + if (ifa->ifa_addr == NULL)
> + continue;
>
> switch(ifa->ifa_addr->sa_family) {
> case AF_LINK:
> diff --git usr.bin/netstat/route.c usr.bin/netstat/route.c
> index 9e8e22ba54b..1aef3f9cd3c 100644
> --- usr.bin/netstat/route.c
> +++ usr.bin/netstat/route.c
> @@ -368,7 +368,8 @@ rdomainpr(void)
>
> getifaddrs(&ifap);
> for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
> - if (ifa->ifa_addr->sa_family != AF_LINK)
> + if (ifa->ifa_addr == NULL ||
> + ifa->ifa_addr->sa_family != AF_LINK)
> continue;
> ifd = ifa->ifa_data;
> if (rdom_if[ifd->ifi_rdomain] == NULL) {
> diff --git usr.bin/rusers/rusers.c usr.bin/rusers/rusers.c
> index 53f50a8ce6a..124ebd6cc9c 100644
> --- usr.bin/rusers/rusers.c
> +++ usr.bin/rusers/rusers.c
> @@ -558,7 +558,8 @@ allhosts(void)
> */
> for (i = 0; i < 6; i++) {
> for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
> - if (ifa->ifa_addr->sa_family != AF_INET ||
> + if (ifa->ifa_addr == NULL ||
> + ifa->ifa_addr->sa_family != AF_INET ||
> !(ifa->ifa_flags & IFF_BROADCAST) ||
> !(ifa->ifa_flags & IFF_UP) ||
> ifa->ifa_broadaddr == NULL ||
>
--
:wq Claudio