Bug 1490782

Summary: dhclient_script incorrectly sets hostname when building /etc/resolv.conf
Product: Red Hat Enterprise Linux 7 Reporter: Renaud Métrich <rmetrich>
Component: dhcpAssignee: Pavel Zhukov <pzhukov>
Status: CLOSED ERRATA QA Contact: Release Test Team <release-test-team-automation>
Severity: low Docs Contact:
Priority: low    
Version: 7.4CC: abhishek, jikortus, jstodola, rmetrich, thozza
Target Milestone: rcKeywords: EasyFix, Patch
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: dhcp-4.2.5-63.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-04-10 08:00:52 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Suggested fix none

Description Renaud Métrich 2017-09-12 08:43:52 UTC
Created attachment 1324764 [details]
Suggested fix

Description of problem:

dhclient_script has a function called eventually_add_hostnames_domain_to_search() which adds the domain in the search line of /etc/resolv.conf when no hostname is set and an alternate domain than the one retrieved by DHCP is set.

In that function, calls to "ipcalc" to retrieve a name from DHCP set also the HOSTNAME env variable, which shouldn't be the case (the function is supposed to just add hostname's domain to search line).

This is an issue when dhclient is called directly by the administrator and custom scripts are used in /etc/dhclient.d/*.sh (sourced by execute_client_side_configuration_scripts()).


Version-Release number of selected component (if applicable):

dhclient-4.2.5-58.el7.x86_64 and before


How reproducible:

Always

Steps to Reproduce:
1. Disable NetworkManager

# systemctl stop NetworkManager

2. Stop networking

# /etc/init.d/network stop

3. Set hostname to localhost.localdomain

# hostname localhost.localdomain

4. Create /etc/dhcp/dhclient.d/myscript.sh

# cat << EOF > /etc/dhcp/dhclient.d/myscript.sh
myscript_config() {
	echo "HOSTNAME=$HOSTNAME"
	need_hostname
	echo "need_hostname=$?"
}
EOF
# chmod +x /etc/dhcp/dhclient.d/myscript.sh

5. Execute dhclient -1 -d


Actual results:

HOSTNAME=vm-rhel74.mydomain
need_hostname=1

-> $HOSTNAME is set and need_hostname returns 1 (no need for a hostname)

Expected results:

HOSTNAME=localhost.localdomain
need_hostname=0

Comment 3 Pavel Zhukov 2017-09-20 14:21:42 UTC
Thank you for reporting the issue and patch provided.
As it's downstream script only upstream report/commit is not needed so it should be easy.

Comment 13 errata-xmlrpc 2018-04-10 08:00:52 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2018:0658