From 72a3f5aaa18a2043d36a921af7d4b35e89ad6d47 Mon Sep 17 00:00:00 2001 From: Martin Baulig Date: Fri, 19 Feb 1999 23:02:09 +0000 Subject: [PATCH] Hardcoded system name. (LIBGTOP_COMPILE_RELEASE): Hardcoded system 1999-02-19 Martin Baulig * Makefile.am (LIBGTOP_COMPILE_SYSTEM): Hardcoded system name. (LIBGTOP_COMPILE_RELEASE): Hardcoded system release. (LIBGTOP_COMPILE_MACHINE): Hardcoded machine type. * server.c (main): Abort if not running on the system the server was compiled on. --- src/daemon/ChangeLog | 9 +++++++++ src/daemon/Makefile.am | 5 ++++- src/daemon/server.c | 19 +++++++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/daemon/ChangeLog b/src/daemon/ChangeLog index 14c81771..4bc06505 100644 --- a/src/daemon/ChangeLog +++ b/src/daemon/ChangeLog @@ -1,3 +1,12 @@ +1999-02-19 Martin Baulig + + * Makefile.am (LIBGTOP_COMPILE_SYSTEM): Hardcoded system name. + (LIBGTOP_COMPILE_RELEASE): Hardcoded system release. + (LIBGTOP_COMPILE_MACHINE): Hardcoded machine type. + + * server.c (main): Abort if not running on the system the server + was compiled on. + 1999-02-10 Martin Baulig * gnuserv.c (program_invocation_*_name): Declare this as `extern' diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am index e63b4514..8fb7571a 100644 --- a/src/daemon/Makefile.am +++ b/src/daemon/Makefile.am @@ -14,7 +14,10 @@ LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ -INCLUDES = @INCLUDES@ -D_BSD +INCLUDES = @INCLUDES@ -D_BSD \ + -DLIBGTOP_COMPILE_SYSTEM=\"`uname -s`\" \ + -DLIBGTOP_COMPILE_RELEASE=\"`uname -r`\" \ + -DLIBGTOP_COMPILE_MACHINE=\"`uname -m`\" if NEED_LIBGTOP suid_sysdeps = $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la diff --git a/src/daemon/server.c b/src/daemon/server.c index ca2f9a26..46c55967 100644 --- a/src/daemon/server.c +++ b/src/daemon/server.c @@ -28,6 +28,8 @@ glibtop *glibtop_global_server = &_glibtop_global_server; #include #include +#include + const unsigned long glibtop_server_features = GLIBTOP_SUID_CPU + GLIBTOP_SUID_MEM + @@ -56,13 +58,26 @@ GLIBTOP_SUID_PPP; int main(int argc, char *argv[]) { - /* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */ - + struct utsname uts; int uid, euid, gid, egid; + /* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */ + uid = getuid (); euid = geteuid (); gid = getgid (); egid = getegid (); + if (uname (&uts)) _exit (1); + + if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) || + strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) || + strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) { + fprintf (stderr, "Can only run on %s %s %s\n", + LIBGTOP_COMPILE_SYSTEM, + LIBGTOP_COMPILE_RELEASE, + LIBGTOP_COMPILE_MACHINE); + _exit (1); + } + glibtop_init_p (glibtop_global_server, 0, 0); if (setreuid (euid, uid)) _exit (1);