summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2017-06-19 01:09:09 +0000
committerkrw <krw@openbsd.org>2017-06-19 01:09:09 +0000
commit4430a0f3fd1e1b3a6d0e11790925f0d8fec492d0 (patch)
treee14b3090198e46ed0d9debce937d43b4bceee17b
parentMove the timeout information into struct interface_info with (diff)
downloadwireguard-openbsd-4430a0f3fd1e1b3a6d0e11790925f0d8fec492d0.tar.xz
wireguard-openbsd-4430a0f3fd1e1b3a6d0e11790925f0d8fec492d0.zip
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@
-rw-r--r--sbin/dhclient/dhclient.c22
1 files 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 <henning@openbsd.org>
@@ -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: