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.
This commit is contained in:
Martin Baulig
1999-02-19 23:02:09 +00:00
committed by Martin Baulig
parent 3c9b2e3d9f
commit 72a3f5aaa1
3 changed files with 30 additions and 3 deletions

View File

@@ -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'

View File

@@ -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

View File

@@ -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);