Bug 1452034

Summary: when the /etc/hosts file has a line longer than 1028 characters getent ahostsv4 and ahostsv6 will stop working.
Product: Red Hat Enterprise Linux 7 Reporter: Raul Mahiques <rmahique>
Component: glibcAssignee: Florian Weimer <fweimer>
Status: CLOSED ERRATA QA Contact: qe-baseos-tools-bugs
Severity: low Docs Contact: Vladimír Slávik <vslavik>
Priority: low    
Version: 7.3CC: ashankar, brubisch, codonell, cww, fweimer, glibc-bugzilla, mnewsome, pfrankli, qe-baseos-tools-bugs, skolosov, vslavik
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glibc-2.17-202.el7 Doc Type: No Doc Update
Doc Text:
undefined
Story Points: ---
Clone Of: 1452032 Environment:
Last Closed: 2018-04-10 13:58:28 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:
Bug Depends On:    
Bug Blocks: 1420851, 1452032    

Description Raul Mahiques 2017-05-18 08:13:19 UTC
+++ This bug was initially created as a clone of Bug #1452032 +++

Description of problem:
when the /etc/hosts file has a line longer than 1028 characters getent ahostsv4 and ahostsv6 will stop working for hostsnames present in /etc/hosts.
This happens even if the line is a comment.

Version-Release number of selected component (if applicable):
Tested in RHEL 6.9 and RHEL 7.3
glibc-2.17-157
glibc-2.12-1

How reproducible:
Always




Steps to Reproduce:
With this oneliner you can see how it stops resolving after the line reaches 1028 characters, even if it's commented.
echo -n '#' >>/etc/hosts ; for i in $(seq 1 1030); do echo -n "$i - "; echo -n 'a' >>/etc/hosts ; getent ahostsv4 `hostname -f`; done


Actual results:
It stops working after 1028 characters.

Expected results:
It continues working and at least ignores the commented line

Additional info:

--- Additional comment from Red Hat Bugzilla Rules Engine on 2017-05-18 04:12:24 EDT ---

Since this bug report was entered in Red Hat Bugzilla, the release flag has been set to ? to ensure that it is properly evaluated for this release.

Comment 5 Florian Weimer 2017-08-02 18:02:44 UTC
The core issue is that getaddrinfo looks at h_errno even if nss_files returns NSS_STATUS_SUCCESS.  The reproducer triggers an internal failure within nss_files, which overwrites h_errno, although the nss_files succeeds eventually.

Upstream, we will fix this by changing getaddrinfo, but *how* is not completely clear to me yet.

Downstream, we can either rebase getaddrinfo (more or less required to fix bug 168253), or patch nss_files not to leak the temporary h_errno value in this case.

Comment 6 Florian Weimer 2017-08-11 10:52:44 UTC
Upstream patch posted: https://sourceware.org/ml/libc-alpha/2017-08/msg00292.html

Comment 16 errata-xmlrpc 2018-04-10 13:58:28 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/RHSA-2018:0805