From 960947135cfcb26352f2dde35fd4a3645dbaa268 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Mon, 4 Nov 2024 17:16:33 +0100 Subject: [PATCH] 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 .*\' lib/gshadow.c static /*@null@*//*@only@*/char **admins = NULL; $ grep '^static .*\' lib/gshadow.c static /*@null@*//*@only@*/char **members = NULL; Fixes: 8e167d28afd6 ("[svn-upgrade] Integrating new upstream version, shadow (4.0.8)") Signed-off-by: Alejandro Colomar --- lib/gshadow.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/gshadow.c b/lib/gshadow.c index 5a89ca2f..33ebd489 100644 --- a/lib/gshadow.c +++ b/lib/gshadow.c @@ -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;