diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-03-09 18:02:55 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-03-09 18:02:55 +0000 |
commit | b99d094da26977938043a92f89ef882a70250cf8 (patch) | |
tree | c5b8792cf8b7a8be602fef23ddb51a5dfee2ba44 /x11-wm/openbox/files/openbox-3.6.1-getgrent-to-getgroups.patch | |
parent | 0fd62365fc104d7e6d5f3ef67800df09225a4019 (diff) |
gentoo auto-resync : 09:03:2023 - 18:02:55
Diffstat (limited to 'x11-wm/openbox/files/openbox-3.6.1-getgrent-to-getgroups.patch')
-rw-r--r-- | x11-wm/openbox/files/openbox-3.6.1-getgrent-to-getgroups.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/x11-wm/openbox/files/openbox-3.6.1-getgrent-to-getgroups.patch b/x11-wm/openbox/files/openbox-3.6.1-getgrent-to-getgroups.patch new file mode 100644 index 000000000000..4634b5a03028 --- /dev/null +++ b/x11-wm/openbox/files/openbox-3.6.1-getgrent-to-getgroups.patch @@ -0,0 +1,67 @@ +Gentoo: https://bugs.gentoo.org/827227 +Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808138 +Upstream: https://bugzilla.icculus.org/show_bug.cgi?id=5978 + +>From e0cb404f53c9b21a521ea2f14c8cd66fdfb68ea7 Mon Sep 17 00:00:00 2001 +From: Simon <simondobbss@gmail.com> +Date: Tue, 15 Dec 2015 15:46:18 +0100 +Subject: [PATCH] Replace getgrent with getgroups. Fixes #5978. + +--- + obt/paths.c | 34 +++++++++++++++++++++------------- + 1 file changed, 21 insertions(+), 13 deletions(-) + +diff --git a/obt/paths.c b/obt/paths.c +index 25cb6b0..d526936 100644 +--- a/obt/paths.c ++++ b/obt/paths.c +@@ -108,25 +108,33 @@ static void find_uid_gid(uid_t *u, gid_t **g, guint *n) + const gchar *name; + struct group *gr; + ++ gid_t gmain; ++ unsigned int maininc; ++ int i; ++ + *u = getuid(); + pw = getpwuid(*u); + name = pw->pw_name; + +- *g = g_new(gid_t, *n=1); +- (*g)[0] = getgid(); +- +- while ((gr = getgrent())) { +- if (gr->gr_gid != (*g)[0]) { /* skip the main group */ +- gchar **c; +- for (c = gr->gr_mem; *c; ++c) +- if (strcmp(*c, name) == 0) { +- *g = g_renew(gid_t, *g, ++(*n)); /* save the group */ +- (*g)[*n-1] = gr->gr_gid; +- break; +- } ++ gmain = getgid(); ++ ++ *n = getgroups(0, *g); ++ *g = g_new(gid_t, *n); ++ *n = getgroups(*n, *g); ++ ++ /* Check if the effective group ID of the calling process is already ++ included in the returned list. Add it otherwise. */ ++ maininc = 0; ++ for (i = 0; i < *n; i++) { ++ if ( (*g)[i] == gmain ) { ++ maininc = 1; ++ break; + } + } +- endgrent(); ++ if (!maininc) { ++ *g = g_renew(gid_t, *g, ++(*n)); ++ (*g)[*n-1] = gmain; ++ } + + qsort(*g, *n, sizeof(gid_t), gid_cmp); + } +-- +2.1.4 + |