summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Baulig <martin@home-of-linux.org>1999-02-19 23:02:09 +0000
committerMartin Baulig <martin@src.gnome.org>1999-02-19 23:02:09 +0000
commit72a3f5aaa18a2043d36a921af7d4b35e89ad6d47 (patch)
tree9afd4826830f82b21f02c35ac8aadb5116803a8e /src
parent3c9b2e3d9fa78f38ee22fc29e620617730b897a8 (diff)
downloadlibgtop-72a3f5aaa18a2043d36a921af7d4b35e89ad6d47.tar.gz
Hardcoded system name. (LIBGTOP_COMPILE_RELEASE): Hardcoded system
1999-02-19 Martin Baulig <martin@home-of-linux.org> * 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.
Diffstat (limited to 'src')
-rw-r--r--src/daemon/ChangeLog9
-rw-r--r--src/daemon/Makefile.am5
-rw-r--r--src/daemon/server.c19
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 <martin@home-of-linux.org>
+
+ * 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 <martin@home-of-linux.org>
* 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 <glibtop/union.h>
#include <glibtop/sysdeps.h>
+#include <sys/utsname.h>
+
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);