aboutsummaryrefslogtreecommitdiffstats
path: root/src/include/euid_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/euid_common.h')
-rw-r--r--src/include/euid_common.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/include/euid_common.h b/src/include/euid_common.h
index f07cf2868..752df5fff 100644
--- a/src/include/euid_common.h
+++ b/src/include/euid_common.h
@@ -31,25 +31,32 @@
31} 31}
32 32
33extern uid_t firejail_uid; 33extern uid_t firejail_uid;
34extern uid_t firejail_gid;
34 35
35 36
36 37
37static inline void EUID_ROOT(void) { 38static inline void EUID_ROOT(void) {
38 if (seteuid(0) == -1) 39 if (seteuid(0) == -1)
39 fprintf(stderr, "Error: cannot switch euid to root\n"); 40 fprintf(stderr, "Warning: cannot switch euid to root\n");
41 if (setegid(0) == -1)
42 fprintf(stderr, "Warning: cannot switch egid to root\n");
40} 43}
41 44
42static inline void EUID_USER(void) { 45static inline void EUID_USER(void) {
43 if (seteuid(firejail_uid) == -1) 46 if (seteuid(firejail_uid) == -1)
44 fprintf(stderr, "Error: cannot switch euid to user\n"); 47 errExit("seteuid");
48 if (setegid(firejail_gid) == -1)
49 errExit("setegid");
45} 50}
46 51
47static inline void EUID_PRINT(void) { 52static inline void EUID_PRINT(void) {
48 printf("debug: uid %d, euid %d\n", getuid(), geteuid()); 53 printf("debug: uid %d, euid %d\n", getuid(), geteuid());
54 printf("debug: gid %d, egid %d\n", getgid(), getegid());
49} 55}
50 56
51static inline void EUID_INIT(void) { 57static inline void EUID_INIT(void) {
52 firejail_uid = getuid(); 58 firejail_uid = getuid();
59 firejail_gid = getgid();
53} 60}
54 61
55#endif 62#endif