diff options
author | Benoit Dejean <bdejean@gmail.com> | 2015-07-19 22:37:09 +0200 |
---|---|---|
committer | BenoƮt Dejean <bdejean@gmail.com> | 2015-08-08 10:56:24 +0200 |
commit | 45c8452140e65d3f677db0c99d097e02c8a9a6f3 (patch) | |
tree | 543111feedb2e75badee11e0ec1eaa8ff8b8e8e3 | |
parent | 72b4aed8f14b007361fe48aa3748eb39a534aba4 (diff) | |
download | libgtop-45c8452140e65d3f677db0c99d097e02c8a9a6f3.tar.gz |
More debug messages to trace euid/egid changes.
-rw-r--r-- | src/daemon/server.c | 7 | ||||
-rw-r--r-- | sysdeps/freebsd/suid_open.c | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/daemon/server.c b/src/daemon/server.c index 44b7f618..eafa25a2 100644 --- a/src/daemon/server.c +++ b/src/daemon/server.c @@ -25,6 +25,7 @@ #include <glibtop.h> #include <glibtop/union.h> #include <glibtop/sysdeps.h> +#include <glibtop/error.h> #include <sys/utsname.h> @@ -42,6 +43,8 @@ main(int argc, char *argv[]) uid = getuid (); euid = geteuid (); gid = getgid (); egid = getegid (); + glibtop_debug ("uid=%d euid=%d gid=%d egid=%d", getuid(), geteuid(), getgid(), getegid()); + if (uname (&uts) < 0) _exit (1); #ifdef _AIX @@ -74,10 +77,14 @@ main(int argc, char *argv[]) glibtop_init_p (glibtop_global_server, 0, 0); + glibtop_debug ("uid=%d euid=%d gid=%d egid=%d", getuid(), geteuid(), getgid(), getegid()); + if (setreuid (euid, uid)) _exit (1); if (setregid (egid, gid)) _exit (1); + glibtop_debug ("uid=%d euid=%d gid=%d egid=%d", getuid(), geteuid(), getgid(), getegid()); + /* !!! END OF SUID ROOT PART !!! */ handle_slave_connection (0, 0); diff --git a/sysdeps/freebsd/suid_open.c b/sysdeps/freebsd/suid_open.c index c27e4923..55456078 100644 --- a/sysdeps/freebsd/suid_open.c +++ b/sysdeps/freebsd/suid_open.c @@ -71,12 +71,16 @@ glibtop_open_p (glibtop *server, const char *program_name, /* Drop priviledges. */ + glibtop_debug ("uid=%d euid=%d gid=%d egid=%d", getuid(), geteuid(), getgid(), getegid()); + if (setreuid (server->machine.euid, server->machine.uid)) _exit (1); if (setregid (server->machine.egid, server->machine.gid)) _exit (1); + glibtop_debug ("uid=%d euid=%d gid=%d egid=%d", getuid(), geteuid(), getgid(), getegid()); + /* !!! END OF SUID ROOT PART !!! */ /* Our effective uid is now those of the user invoking the server, |