about summary refs log tree commit diff
path: root/grp/tst-putgrent.c
diff options
context:
space:
mode:
authorArjun Shankar <arjun@redhat.com>2023-10-02 14:55:15 +0200
committerArjun Shankar <arjun@redhat.com>2023-10-24 12:30:59 +0200
commitb121fdc552f392cd86b21f159dd3e3b998de91a3 (patch)
treeeee235f1a10c6ce5d1b4d5a760c4a00d1d86e24d /grp/tst-putgrent.c
parent83d13972f23546758b600ba940e0d53248dd0339 (diff)
downloadglibc-b121fdc552f392cd86b21f159dd3e3b998de91a3.tar.gz
glibc-b121fdc552f392cd86b21f159dd3e3b998de91a3.tar.xz
glibc-b121fdc552f392cd86b21f159dd3e3b998de91a3.zip
Remove 'grp' and merge into 'nss' and 'posix'
The majority of grp routines are entry points for nss functionality.
This commit removes the 'grp' subdirectory and moves all nss-relevant
functionality and all tests to 'nss', and the 'setgroups' stub into
'posix' (alongside the 'getgroups' stub).  References to grp/ are
accordingly changed.  In addition, compat-initgroups.c, a fallback
implementation of initgroups is renamed to initgroups-fallback.c so that
the build system does not confuse it for nss_compat/compat-initgroups.c.

Build time improves very slightly; e.g. down from an average of 45.5s to
44.5s on an 8-thread mobile x86_64 CPU.
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
Diffstat (limited to 'grp/tst-putgrent.c')
-rw-r--r--grp/tst-putgrent.c167
1 files changed, 0 insertions, 167 deletions
diff --git a/grp/tst-putgrent.c b/grp/tst-putgrent.c
deleted file mode 100644
index 79c14862bd..0000000000
--- a/grp/tst-putgrent.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/* Test for processing of invalid group entries.  [BZ #18724]
-   Copyright (C) 2015-2023 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; if not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#include <errno.h>
-#include <grp.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static bool errors;
-
-static void
-check (struct group e, const char *expected)
-{
-  char *buf;
-  size_t buf_size;
-  FILE *f = open_memstream (&buf, &buf_size);
-
-  if (f == NULL)
-    {
-      printf ("open_memstream: %m\n");
-      errors = true;
-      return;
-    }
-
-  int ret = putgrent (&e, f);
-
-  if (expected == NULL)
-    {
-      if (ret == -1)
-	{
-	  if (errno != EINVAL)
-	    {
-	      printf ("putgrent: unexpected error code: %m\n");
-	      errors = true;
-	    }
-	}
-      else
-	{
-	  printf ("putgrent: unexpected success (\"%s\", \"%s\")\n",
-		  e.gr_name, e.gr_passwd);
-	  errors = true;
-	}
-    }
-  else
-    {
-      /* Expect success.  */
-      size_t expected_length = strlen (expected);
-      if (ret == 0)
-	{
-	  long written = ftell (f);
-
-	  if (written <= 0 || fflush (f) < 0)
-	    {
-	      printf ("stream error: %m\n");
-	      errors = true;
-	    }
-	  else if (buf[written - 1] != '\n')
-	    {
-	      printf ("FAILED: \"%s\" without newline\n", expected);
-	      errors = true;
-	    }
-	  else if (strncmp (buf, expected, written - 1) != 0
-		   || written - 1 != expected_length)
-	    {
-	      buf[written - 1] = '\0';
-	      printf ("FAILED: \"%s\" (%ld), expected \"%s\" (%zu)\n",
-		      buf, written - 1, expected, expected_length);
-	      errors = true;
-	    }
-	}
-      else
-	{
-	  printf ("FAILED: putgrent (expected \"%s\"): %m\n", expected);
-	  errors = true;
-	}
-    }
-
-  fclose (f);
-  free (buf);
-}
-
-static int
-do_test (void)
-{
-  check ((struct group) {
-      .gr_name = (char *) "root",
-    },
-    "root::0:");
-  check ((struct group) {
-      .gr_name = (char *) "root",
-      .gr_passwd = (char *) "password",
-      .gr_gid = 1234,
-      .gr_mem = (char *[2]) {(char *) "member1", NULL}
-    },
-    "root:password:1234:member1");
-  check ((struct group) {
-      .gr_name = (char *) "root",
-      .gr_passwd = (char *) "password",
-      .gr_gid = 1234,
-      .gr_mem = (char *[3]) {(char *) "member1", (char *) "member2", NULL}
-    },
-    "root:password:1234:member1,member2");
-
-  /* Bad values.  */
-  {
-    static const char *const bad_strings[] = {
-      ":",
-      "\n",
-      ":bad",
-      "\nbad",
-      "b:ad",
-      "b\nad",
-      "bad:",
-      "bad\n",
-      "b:a\nd"
-      ",",
-      "\n,",
-      ":,",
-      ",bad",
-      "b,ad",
-      "bad,",
-      NULL
-    };
-    for (const char *const *bad = bad_strings; *bad != NULL; ++bad)
-      {
-	char *members[]
-	  = {(char *) "first", (char *) *bad, (char *) "last", NULL};
-	if (strpbrk (*bad, ":\n") != NULL)
-	  {
-	    check ((struct group) {
-		.gr_name = (char *) *bad,
-	      }, NULL);
-	    check ((struct group) {
-		.gr_name = (char *) "root",
-		.gr_passwd = (char *) *bad,
-	      }, NULL);
-	  }
-	check ((struct group) {
-	    .gr_name = (char *) "root",
-	    .gr_passwd = (char *) "password",
-	    .gr_mem = members,
-	  }, NULL);
-      }
-  }
-
-  return errors;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"