From patchwork Mon Feb 4 21:16:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patsy Griffin X-Patchwork-Id: 31303 Received: (qmail 56808 invoked by alias); 4 Feb 2019 21:16:49 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 56794 invoked by uid 89); 4 Feb 2019 21:16:49 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 spammy= X-HELO: mail-it1-f172.google.com MIME-Version: 1.0 From: Patsy Franklin Date: Mon, 4 Feb 2019 16:16:08 -0500 Message-ID: Subject: [Patch] nss/tst-nss-files-hosts-long.c To: GNU C Library BZ #21915] When the /etc/hosts file has a line longer than 1028 characters getent ahostsv4 and ahostsv6 will fail. This test performs a getent call on a /etc/hosts file that contains a very long line (greater than 1028) using the test-in-container framework. Testing: Confirmed that the test passes with the current (fixed) sources on x86_64. Also confirmed that the test fails with a source tree that does not have BZ 21915 applied, again on x86_64. Testing was carried out on a RHEL7 system. Reviewed-by: Carlos O'Donell From 475a5dd17d1fa1c36f661ee20c9d59ba4a6a0140 Mon Sep 17 00:00:00 2001 From: Patsy Franklin Date: Wed, 30 Jan 2019 18:49:27 -0500 Subject: [PATCH] nss: Add tst-nss-files-hosts-long test [BZ #21915] When the /etc/hosts file has a line longer than 1028 characters getent ahostsv4 and ahostsv6 will fail. This test performs a getent call on a /etc/hosts file that contains a very long line (greater than 1028) using the test-in-container framework. --- ChangeLog | 9 +++++ nss/Makefile | 3 +- nss/tst-nss-files-hosts-long.c | 45 +++++++++++++++++++++ nss/tst-nss-files-hosts-long.root/etc/hosts | 11 +++++ 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 nss/tst-nss-files-hosts-long.c create mode 100644 nss/tst-nss-files-hosts-long.root/etc/hosts diff --git a/ChangeLog b/ChangeLog index 23c20066a4..cd2d9a898e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2019-01-30 Patsy Griffin Franklin + + [BZ #21915] + * nss/Makefile (test-container): Add tst-nss-files-hosts-long. + * nss/tst-nss-files-hosts-long.c: New file. + * nss/tst-nss-files-hosts-long.root: New directory. + * nss/tst-nss-files-hosts-long.root/etc: Likewise. + * nss/tst-nss-files-hosts-long.root/etc/hosts: New file. + 2019-01-25 Siddhesh Poyarekar * po/be.po: Update translations. diff --git a/nss/Makefile b/nss/Makefile index 0fa28f0c5e..85bee87f78 100644 --- a/nss/Makefile +++ b/nss/Makefile @@ -60,7 +60,8 @@ tests = test-netdb test-digits-dots tst-nss-getpwent bug17079 \ xtests = bug-erange tests-container = \ - tst-nss-test3 + tst-nss-test3 \ + tst-nss-files-hosts-long # Tests which need libdl ifeq (yes,$(build-shared)) diff --git a/nss/tst-nss-files-hosts-long.c b/nss/tst-nss-files-hosts-long.c new file mode 100644 index 0000000000..693d4b7ca0 --- /dev/null +++ b/nss/tst-nss-files-hosts-long.c @@ -0,0 +1,45 @@ +/* Test getent doesn't fail with long /etc/hosts lines (Bug 21915). + Copyright (C) 2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; see the file COPYING.LIB. If + not, see . */ + + /* This test runs getent twice to parse a /etc/hosts with a very + long line. Prior to fixing this parser this would crash getent. */ + +#include +#include +#include + +static int +do_test (void) +{ + int ret; + + /* Run getent to fetch the IPv4 address for host test4. + This forces /etc/hosts to be parsed. */ + + ret = system("getent ahostsv4 test4"); + if (ret != 0) + FAIL_EXIT1("ahostsv4 failed"); + + /* Likewise for IPv6. */ + + ret = system("getent ahostsv6 test6"); + if (ret != 0) + FAIL_EXIT1("ahostsv6 failed"); + exit (0); +} +#include diff --git a/nss/tst-nss-files-hosts-long.root/etc/hosts b/nss/tst-nss-files-hosts-long.root/etc/hosts new file mode 100644 index 0000000000..299e661082 --- /dev/null +++ b/nss/tst-nss-files-hosts-long.root/etc/hosts @@ -0,0 +1,11 @@ +# This data is valid and short. + +192.168.1.1 test4.example.com test4 +::2 test6.example.com test6 + +# Long line data is arbitrary and not specifically chosen. +# They key issue is that it should be long to trigger the parser failure. + +192.168.2.2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.ru +#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + -- 2.17.1