diff options
author | Gicu GORODENCO | 2018-02-10 21:35:12 +0100 |
---|---|---|
committer | Gicu GORODENCO | 2018-02-10 21:53:37 +0100 |
commit | 7239003199fc758fe512af5f4ba15911b54bd270 (patch) | |
tree | adf453a007adff4945dbd1c0be2ab64ac9473261 /guid.patch | |
parent | ba45b978f18e1bef2c9b4fa4b3bb596479bd7c8b (diff) | |
download | aur-7239003199fc758fe512af5f4ba15911b54bd270.tar.gz |
Update to 2.2.6 source code
Diffstat (limited to 'guid.patch')
-rw-r--r-- | guid.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/guid.patch b/guid.patch new file mode 100644 index 000000000000..ce28e024f3fd --- /dev/null +++ b/guid.patch @@ -0,0 +1,42 @@ +diff --git a/scheduler/cups-exec.c b/scheduler/cups-exec.c +index aab43a797..46c549075 100644 +--- a/scheduler/cups-exec.c ++++ b/scheduler/cups-exec.c +@@ -133,8 +133,13 @@ main(int argc, /* I - Number of command-line args */ + if (setgid(gid)) + exit(errno + 100); + +- if (setgroups(1, &gid)) ++#include <pwd.h> ++ struct passwd * pwd = getpwuid(uid); ++ if(initgroups(pwd->pw_name,pwd->pw_gid)) ++ { ++ fprintf(stderr, "DEBUG: initgroups failed\n"); + exit(errno + 100); ++ } + + if (uid && setuid(uid)) + exit(errno + 100); +diff --git a/scheduler/util.c b/scheduler/util.c +index 19ebf069b..4638562bd 100644 +--- a/scheduler/util.c ++++ b/scheduler/util.c +@@ -300,7 +300,16 @@ cupsdPipeCommand(int *pid, /* O - Process ID or 0 on error */ + */ + + if (!getuid() && user) +- setuid(user); /* Run as restricted user */ ++ { ++#include <pwd.h> ++ struct passwd * pwd = getpwuid(user); ++ if(initgroups(pwd->pw_name,pwd->pw_gid)) ++ { ++ fprintf(stderr, "DEBUG: initgroups failed\n"); ++ exit(errno + 100); ++ } ++ setuid(user); /* Run as restricted user */ ++ } + + if ((fd = open("/dev/null", O_RDONLY)) > 0) + { + |