[Xfce4-commits] [xfce/xfce4-session] 03/03: Use sysconf(_SC_NGROUPS_MAX) instead of #defining an arbitrary MAX_USER_GROUPS (bug #14722)
noreply at xfce.org
noreply at xfce.org
Thu May 2 19:50:38 CEST 2019
This is an automated email from the git hooks/post-receive script.
l a n d r y p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository xfce/xfce4-session.
commit 207954303e3510aac0d51567f10cf1bd0b9f3fda
Author: Landry Breuil <landry at xfce.org>
Date: Sat Apr 27 17:41:37 2019 +0200
Use sysconf(_SC_NGROUPS_MAX) instead of #defining an arbitrary MAX_USER_GROUPS (bug #14722)
---
xfce4-session/xfsm-shutdown-fallback.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/xfce4-session/xfsm-shutdown-fallback.c b/xfce4-session/xfsm-shutdown-fallback.c
index 28df8f8..c3444da 100644
--- a/xfce4-session/xfsm-shutdown-fallback.c
+++ b/xfce4-session/xfsm-shutdown-fallback.c
@@ -69,8 +69,6 @@
#include <pwd.h>
#include <grp.h>
-#define MAX_USER_GROUPS 100
-
#include <libxfsm/xfsm-util.h>
#include <libxfsm/xfsm-shutdown-common.h>
#include <xfce4-session/xfsm-shutdown-fallback.h>
@@ -206,8 +204,8 @@ static gboolean
xfsm_shutdown_fallback_user_is_operator (void)
{
struct passwd *pw;
- gid_t groups[MAX_USER_GROUPS];
- int max_grp = MAX_USER_GROUPS;
+ int max_grp = sysconf(_SC_NGROUPS_MAX);
+ gid_t *groups;
int i = 0;
int ret;
static gboolean is_operator = FALSE;
@@ -217,6 +215,19 @@ xfsm_shutdown_fallback_user_is_operator (void)
if (once == TRUE)
goto out;
+ if (max_grp == -1)
+ {
+ fprintf (stderr, "sysconf(_SC_NGROUPS_MAX) failed");
+ return FALSE;
+ }
+
+ groups = malloc(sizeof(gid_t) * max_grp);
+ if (groups == NULL)
+ {
+ fprintf (stderr, "malloc(sizeof(gid_t) * max_grp) failed");
+ return FALSE;
+ }
+
pw = getpwuid (getuid());
ret = getgrouplist (pw->pw_name, pw->pw_gid, groups, &max_grp);
@@ -225,7 +236,8 @@ xfsm_shutdown_fallback_user_is_operator (void)
{
fprintf (stderr,
"Failed to get user group list, user belongs to more than %u groups?\n",
- MAX_USER_GROUPS);
+ max_grp);
+ free(groups);
goto out;
}
@@ -242,6 +254,7 @@ xfsm_shutdown_fallback_user_is_operator (void)
break;
}
}
+ free(groups);
out:
return is_operator;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list