1  /* Test getent doesn't fail with long /etc/hosts lines (Bug 21915).
       2     Copyright (C) 2019-2023 Free Software Foundation, Inc.
       3     This file is part of the GNU C Library.
       4  
       5     The GNU C Library is free software; you can redistribute it and/or
       6     modify it under the terms of the GNU Lesser General Public License as
       7     published by the Free Software Foundation; either version 2.1 of the
       8     License, or (at your option) any later version.
       9  
      10     The GNU C Library is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public
      16     License along with the GNU C Library; see the file COPYING.LIB.  If
      17     not, see <https://www.gnu.org/licenses/>.  */
      18  
      19  /* This test runs getent twice to parse a /etc/hosts with a very
      20     long line. Prior to fixing this parser this would crash getent.  */
      21  
      22  #include <stdlib.h>
      23  #include <nss.h>
      24  #include <support/check.h>
      25  
      26  static int
      27  do_test (void)
      28  {
      29    int ret;
      30  
      31    /* Run getent to fetch the IPv4 address for host test4.  This forces
      32       /etc/hosts to be parsed.  Use --no-addrconfig to return addresses
      33       even in an IPv6-only environment.  */
      34    ret = system("getent --no-addrconfig ahostsv4 test4");
      35    if (ret != 0)
      36      FAIL_EXIT1("ahostsv4 failed");
      37  
      38    /* Likewise for IPv6.  */
      39    ret = system("getent --no-addrconfig  ahostsv6 test6");
      40    if (ret != 0)
      41      FAIL_EXIT1("ahostsv6 failed");
      42  
      43    exit (0);
      44  }
      45  
      46  #include <support/test-driver.c>