Message ID | CAOraFgAzwpZE3BkD5xZfyGmFTNbkLPqM8b8hBvez9_68uo4uiA@mail.gmail.com |
---|---|
State | New |
Headers | show |
Series | nss/tst-nss-files-hosts-long.c | expand |
Patsy, Thanks for the new test! I like to see new tests like this which make use of test-in-container to simplify the boilerplate, and cover one of the bugs by running built binaries. Lots of good coverage here. Thanks. > 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. Perfect. Thanks for doing A/B testing on x86_64. OK for master with ChangeLog date fixed and comment spacing and style fixed up. Feel free to post v2 or just commit with the changes. Reviewed-by: Carlos O'Donell <carlos@redhat.com> > 0001-nss-Add-tst-nss-files-hosts-long-test-BZ-21915.patch > > From 475a5dd17d1fa1c36f661ee20c9d59ba4a6a0140 Mon Sep 17 00:00:00 2001 > From: Patsy Franklin <pfrankli@redhat.com> > 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. OK. Thanks, commit message looks good to me. > --- > 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 <pfrankli@redhat.com> Refresh date to: 2019-02-04 > + > + [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 <siddhesh@sourceware.org> > > * 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 OK. > > # 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). OK. > + Copyright (C) 2019 Free Software Foundation, Inc. OK. > + 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 <http://www.gnu.org/licenses/>. */ > + > + /* This test runs getent twice to parse a /etc/hosts with a very > + long line. Prior to fixing this parser this would crash getent. */ Make "This" and "long" line up please. > + > +#include <stdlib.h> > +#include <nss.h> > +#include <support/check.h> > + > +static int > +do_test (void) > +{ > + int ret; > + > + /* Run getent to fetch the IPv4 address for host test4. > + This forces /etc/hosts to be parsed. */ Make "/* Run..." start on the 3rd column, and then make "This forces" line up with "Run". > + Remove this empty line so the comment is together with the code. > + ret = system("getent ahostsv4 test4"); > + if (ret != 0) > + FAIL_EXIT1("ahostsv4 failed"); > + > + /* Likewise for IPv6. */ > + Make "/* Likewise..." start on the 3rd column. Remove the following empty line so the comment is together with the code. > + ret = system("getent ahostsv6 test6"); > + if (ret != 0) > + FAIL_EXIT1("ahostsv6 failed"); Add an empty line here after the FAIL_EXIT1 so exit (0); is in a visual group by itself. > + exit (0); > +} Add an empty line here so the #include is in a visual group by itself. > +#include <support/test-driver.c> > 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. > + Remove empty line. Grouping the comment and the data it relates to. > +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. > + Remove empty line. Grouping the comment and the data it relates to. > +192.168.2.2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.ru > +#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa > + > -- 2.17.1
From 475a5dd17d1fa1c36f661ee20c9d59ba4a6a0140 Mon Sep 17 00:00:00 2001 From: Patsy Franklin <pfrankli@redhat.com> 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 <pfrankli@redhat.com> + + [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 <siddhesh@sourceware.org> * 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 <http://www.gnu.org/licenses/>. */ + + /* 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 <stdlib.h> +#include <nss.h> +#include <support/check.h> + +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 <support/test-driver.c> 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