Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Jan 2002 10:12:04 -0700
From:      "brian j. peterson" <rbw@myplace.org>
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        "brian j. peterson" <rbw@myplace.org>
Subject:   misc/34455: [PATCH] /sbin/dhclient-script overwrites /etc/resolv.conf without any relevant information
Message-ID:  <20020130101203.A551@malkavian.org>

next in thread | raw e-mail | index | archive | help

>Number:         34455
>Category:       misc
>Synopsis:       [PATCH] /sbin/dhclient-script overwrites /etc/resolv.conf without any relevant information
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jan 30 09:20:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     "brian j. peterson" <rbw@myplace.org>
>Release:        FreeBSD 4.5-PRERELEASE alpha
>Organization:
>Environment:
System: FreeBSD nikita 4.5-PRERELEASE FreeBSD 4.5-PRERELEASE #7: Sun Jan 6 17:14:40 MST 2002 root@nikita:/usr/obj/usr/src/sys/HARLOT alpha


>Description:
With the following /etc/dhclient.conf, I am not requesting a domain-name
or domain-name-servers, but '/sbin/dhclient de0' still overwrites my
/etc/resolv.conf.

root@nikita% cat /etc/dhclient.conf 
interface "de0" {
        send host-name "nikita";
        request subnet-mask,
                broadcast-address,
                routers;
}
root@nikita% cat /etc/resolv.conf
search 
root@nikita% 

Basically, the make_resolv_conf() portion of /sbin/dhclient-conf is
overwriting /etc/resolv.conf despite the fact that it has no useful
information to write to it.


>How-To-Repeat:
1) define a custom /etc/resolv.conf
2) start /sbin/dhclient on an interface configured without any
   'domain-name' or 'domain-name-servers' options defined in any
   'require' or 'request' statements.
3) observe that /etc/resolv.conf has been overwritten


>Fix:

Modify the make_resolv_conf() portion of /sbin/dhclient like so:

root@nikita% diff -u /sbin/dhclient-script_1.9.2.4 /sbin/dhclient-script_new
--- /sbin/dhclient-script_1.9.2.4       Mon Jan  7 17:29:01 2002
+++ /sbin/dhclient-script_new   Tue Jan 29 18:54:04 2002
@@ -9,10 +9,12 @@
 fi
 
 make_resolv_conf() {
-  echo search $new_domain_name >/etc/resolv.conf
-  for nameserver in $new_domain_name_servers; do
-    echo nameserver $nameserver >>/etc/resolv.conf
-  done
+  if [ x$new_domain_name != x ]; then
+    echo search $new_domain_name >/etc/resolv.conf
+    for nameserver in $new_domain_name_servers; do
+      echo nameserver $nameserver >>/etc/resolv.conf
+    done
+  fi
 }
 
 # Must be used on exit.   Invokes the local dhcp client exit hooks, if any.

The above diff is based on
$FreeBSD: src/contrib/isc-dhcp/client/scripts/freebsd,v 1.9.2.4 2001/03/05 10:09:32 obrien Exp $
but can easily be applied to -CURRENT (v 1.19) and then MFC'd at a later date.
>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020130101203.A551>