Merge pull request #911 from thejan2009/setgid-setuid

Split setgid and setuid, add privilege check [RFC]
This commit is contained in:
Drew DeVault 2016-09-27 14:28:14 -04:00 committed by GitHub
commit 4e660975a9

View File

@ -156,10 +156,18 @@ int main(int argc, char **argv) {
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if (getuid() != geteuid() || getgid() != getegid()) { if (getuid() != geteuid() || getgid() != getegid()) {
if (setgid(getgid()) != 0 || setuid(getuid()) != 0) { if (setgid(getgid()) != 0) {
sway_log(L_ERROR, "Unable to drop root"); sway_log(L_ERROR, "Unable to drop root");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if (setuid(getuid()) != 0) {
sway_log(L_ERROR, "Unable to drop root");
exit(EXIT_FAILURE);
}
}
if (setuid(0) != -1) {
sway_log(L_ERROR, "Root privileges can be restored.");
exit(EXIT_FAILURE);
} }
char *socket_path = getenv("SWAYSOCK"); char *socket_path = getenv("SWAYSOCK");
if (!socket_path) { if (!socket_path) {