lib/gshadow.c: build_list(): Fix type of parameter

list ($2) is a pointer to a list of strings.  We were declaring it as an
array of pointers to strings, which was bogus.  It worked out of luck,
because array parameters are transformed into pointers by the compiler,
but it was incorrect.  Just look at how we're calling this function.

	$ grep build_list lib/gshadow.c
	build_list(char *s, char ***list, size_t *nlist)
		sgroup.sg_adm = build_list (fields[2], &admins, &nadmins);
		sgroup.sg_mem = build_list (fields[3], &members, &nmembers);
	$ grep '^static .*\<admins\>' lib/gshadow.c
	static /*@null@*//*@only@*/char **admins = NULL;
	$ grep '^static .*\<members\>' lib/gshadow.c
	static /*@null@*//*@only@*/char **members = NULL;

Fixes: 8e167d28af ("[svn-upgrade] Integrating new upstream version, shadow (4.0.8)")
Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
Alejandro Colomar
2024-11-04 17:16:33 +01:00
committed by Serge Hallyn
parent c8c1059384
commit 960947135c

View File

@@ -36,7 +36,8 @@ static struct sgrp sgroup;
#define FIELDS 4
static /*@null@*/char **build_list (char *s, char **list[], size_t * nlist)
static /*@null@*/char **
build_list(char *s, char ***list, size_t *nlist)
{
char **ptr = *list;
size_t nelem = *nlist, size;