11/*
22 * SPDX-License-Identifier: ISC
33 *
4- * Copyright (c) 1996, 1998-2005, 2007-2018
4+ * Copyright (c) 1996, 1998-2005, 2007-2021, 2023-2025
55 * Todd C. Miller <[email protected] > 66 *
77 * Permission to use, copy, modify, and distribute this software for any
@@ -363,12 +363,12 @@ PREFIX(make_gidlist_item)(const struct passwd *pw, int ngids, GETGROUPS_T *gids,
363363struct cache_item *
364364PREFIX (make_grlist_item )(const struct passwd * pw , char * const * unused1 )
365365{
366+ const size_t groupname_len = sudo_login_name_max ();
366367 size_t len , ngroups , nsize , total ;
367368 struct cache_item_grlist * grlitem ;
368369 struct group_list * grlist ;
369370 struct gid_list * gidlist ;
370371 struct group * grp = NULL ;
371- long groupname_len ;
372372 char * cp ;
373373 int i ;
374374 debug_decl (sudo_make_grlist_item , SUDOERS_DEBUG_NSS );
@@ -381,19 +381,11 @@ PREFIX(make_grlist_item)(const struct passwd *pw, char * const *unused1)
381381 debug_return_ptr (NULL );
382382 }
383383
384- #ifdef _SC_LOGIN_NAME_MAX
385- groupname_len = sysconf (_SC_LOGIN_NAME_MAX );
386- if (groupname_len < 32 )
387- groupname_len = 32 ;
388- #else
389- groupname_len = MAX (LOGIN_NAME_MAX , 32 );
390- #endif
391-
392384 /* Allocate in one big chunk for easy freeing. */
393385 nsize = strlen (pw -> pw_name ) + 1 ;
394386 total = sizeof (* grlitem ) + nsize ;
395387 total += sizeof (char * ) * (size_t )gidlist -> ngids ;
396- total += ( size_t )( groupname_len * gidlist -> ngids ) ;
388+ total += groupname_len * ( size_t ) gidlist -> ngids ;
397389
398390again :
399391 if ((grlitem = calloc (1 , total )) == NULL ) {
@@ -432,7 +424,7 @@ PREFIX(make_grlist_item)(const struct passwd *pw, char * const *unused1)
432424 if ((grp = sudo_getgrgid (gidlist -> gids [i ])) != NULL ) {
433425 len = strlen (grp -> gr_name ) + 1 ;
434426 if ((size_t )(cp - (char * )grlitem ) + len > total ) {
435- total += len + ( size_t ) groupname_len ;
427+ total += len + groupname_len ;
436428 free (grlitem );
437429 sudo_gr_delref (grp );
438430 goto again ;
0 commit comments