From 4430a0f3fd1e1b3a6d0e11790925f0d8fec492d0 Mon Sep 17 00:00:00 2001 From: krw Date: Mon, 19 Jun 2017 01:09:09 +0000 Subject: [PATCH] Erroneous host names in various options should be ignored and not cause the lease to be declined. Restore inadvertantly changed behaviour. Tweak logic to also ignore invalid host names in domain-search. Reported by Christer Solskogen via misc@ --- sbin/dhclient/dhclient.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c index d9f27578cfe..d883899c5f4 100644 --- a/sbin/dhclient/dhclient.c +++ b/sbin/dhclient/dhclient.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dhclient.c,v 1.437 2017/06/18 21:08:15 krw Exp $ */ +/* $OpenBSD: dhclient.c,v 1.438 2017/06/19 01:09:09 krw Exp $ */ /* * Copyright 2004 Henning Brauer @@ -1229,12 +1229,10 @@ packet_to_lease(struct interface_info *ifi, struct option_data *options) /* Must decode the option into text to check names. */ buf = pretty_print_domain_search(options[i].data, options[i].len); - if (buf == NULL) + if (buf == NULL || !res_hnok_list(buf)) { + log_warnx("Ignoring %s in offer: invalid host " + "name(s)", dhcp_options[i].name); continue; - if (!res_hnok_list(buf)) { - log_warnx("lease declined: invalid host " - "name(s) in %s", dhcp_options[i].name); - goto decline; } break; case DHO_DOMAIN_NAME: @@ -1245,17 +1243,17 @@ packet_to_lease(struct interface_info *ifi, struct option_data *options) * entries in the resolv.conf 'search' statement. */ if (!res_hnok_list(pretty)) { - log_warnx("lease declined: invalid host " - "names in %s", dhcp_options[i].name); - goto decline; + log_warnx("Ignoring %s in offer: invalid host " + "name(s)", dhcp_options[i].name); + continue; } break; case DHO_HOST_NAME: case DHO_NIS_DOMAIN: if (!res_hnok(pretty)) { - log_warnx("lease declined: invalid host name " - "in %s", dhcp_options[i].name); - goto decline; + log_warnx("Ignoring %s in offer: invalid host " + "name", dhcp_options[i].name); + continue; } break; default: -- 2.20.1