From: Tobias Stoeckmann Date: Wed, 11 Mar 2026 21:34:05 +0000 (+0100) Subject: useradd: Check sysconf return value X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=3dadabbe684a75e2ca12ce1c233985c0edb04f9c;p=thirdparty%2Fshadow.git useradd: Check sysconf return value Verify that sysconf does not return -1. It is not important if it's due to an error or due to a missing upper boundary. In both cases, fall back to a constant value. Reviewed-by: Alejandro Colomar Signed-off-by: Tobias Stoeckmann --- diff --git a/src/useradd.c b/src/useradd.c index 6570cee83..5534e1d86 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -221,6 +221,10 @@ static bool home_added = false; #define DBTRFS_SUBVOLUME_HOME "BTRFS_SUBVOLUME_HOME" #define DLOG_INIT "LOG_INIT" +#ifndef NGROUPS_MAX +#define NGROUPS_MAX 65536 +#endif + /* local function prototypes */ NORETURN static void fail_exit (int, bool); static void get_defaults(const struct option_flags *); @@ -2529,6 +2533,8 @@ int main (int argc, char **argv) #endif sys_ngroups = sysconf (_SC_NGROUPS_MAX); + if (sys_ngroups == -1) + sys_ngroups = NGROUPS_MAX; user_groups = xmalloc_T(1 + sys_ngroups, char *); /* * Initialize the list to be empty