diff --git a/src/server/.cvsignore b/src/server/.cvsignore deleted file mode 100644 index 2164d8f4..00000000 --- a/src/server/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -gtop_server diff --git a/src/server/Makefile.am b/src/server/Makefile.am deleted file mode 100644 index 7717b0e2..00000000 --- a/src/server/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -LINK = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ - -CFLAGS = -Wall -W @CFLAGS@ - -bin_PROGRAMS = gtop_server - -gtop_server_SOURCES = main.c output.c version.c -gtop_server_LDADD = $(top_builddir)/sysdeps/@sysdeps_dir@/libgtop_sysdeps_suid.la \ - $(top_builddir)/sysdeps/common/libgtop_suid_common.la \ - @LIBSUPPORT@ -gtop_server_LDFLAGS = -static - diff --git a/src/server/main.c b/src/server/main.c deleted file mode 100644 index 161e49ca..00000000 --- a/src/server/main.c +++ /dev/null @@ -1,274 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the Gnome Top Library. - Contributed by Martin Baulig , April 1998. - - The Gnome Top Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The Gnome Top Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include -#include -#include -#include -#include - -#include -#include - -#if defined(HAVE_GETDTABLESIZE) -#define GET_MAX_FDS() getdtablesize() -#else -/* Fallthrough case - please add other #elif cases above - for different OS's as necessary */ -#define GET_MAX_FDS() 256 -#endif - -int main(int argc, char *argv[]) -{ - pid_t pid; - int fd, max_fd, nread; - size_t size, dsize; - char parameter [BUFSIZ]; - glibtop_union data; - glibtop_command cmnd; - glibtop_sysdeps sysdeps; - glibtop server; - void *ptr; - - /* !!! WE ARE ROOT HERE - CHANGE WITH CAUTION !!! */ - - int uid, euid, gid, egid; - - uid = getuid (); euid = geteuid (); - gid = getgid (); egid = getegid (); - - glibtop_version (); - - glibtop_open_p (&server, argv [0], 0, 0); - - if (setreuid (euid, uid)) _exit (1); - - if (setregid (egid, gid)) _exit (1); - - /* !!! END OF SUID ROOT PART !!! */ - - /* close all file descriptors except ones used by the pipes (0 and 1). */ - max_fd = GET_MAX_FDS(); - for(fd = 3 /* The first fd after the pipes */; fd < max_fd; fd++) - close(fd); - - while(1) { - /* block on read from client */ - nread = read (0, &size, sizeof (size_t)); - - /* will return 0 if parent exits. */ - - if (nread == 0) - _exit(0); - - if (nread != sizeof (size_t)) - _exit(1); - - if (size != sizeof (glibtop_command)) - _exit(2); - - nread = read (0, &cmnd, size); - - /* will return 0 if parent exits. */ - - if (nread == 0) - _exit(0); - - if (nread < 0) - _exit(1); - - nread = read (0, &dsize, sizeof (size_t)); - - /* will return 0 if parent exits. */ - - if (nread == 0) - _exit(0); - - if (nread < 0) - _exit(1); - - if (dsize >= BUFSIZ) - _exit(3); - - memset (parameter, 0, sizeof (parameter)); - - if (dsize) { - nread = read (0, parameter, dsize); - - /* will return 0 if parent exits. */ - - if (nread == 0) - _exit(0); - - if (nread < 0) - _exit(1); - } - - switch (cmnd.command) { - case GLIBTOP_CMND_SYSDEPS: - sysdeps.features = GLIBTOP_SYSDEPS_ALL; - glibtop_output (sizeof (glibtop_sysdeps), &sysdeps); - glibtop_output (0, NULL); - break; -#if GLIBTOP_SUID_CPU - case GLIBTOP_CMND_CPU: - glibtop_get_cpu_p (&server, &data.cpu); - glibtop_output (sizeof (glibtop_cpu), &data.cpu); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_MEM - case GLIBTOP_CMND_MEM: - glibtop_get_mem_p (&server, &data.mem); - glibtop_output (sizeof (glibtop_mem), &data.mem); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_SWAP - case GLIBTOP_CMND_SWAP: - glibtop_get_swap_p (&server, &data.swap); - glibtop_output (sizeof (glibtop_swap), &data.swap); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_UPTIME - case GLIBTOP_CMND_UPTIME: - glibtop_get_uptime_p (&server, &data.uptime); - glibtop_output (sizeof (glibtop_uptime), &data.uptime); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_LOADAVG - case GLIBTOP_CMND_LOADAVG: - glibtop_get_loadavg_p (&server, &data.loadavg); - glibtop_output (sizeof (glibtop_loadavg), &data.loadavg); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_SHM_LIMITS - case GLIBTOP_CMND_SHM_LIMITS: - glibtop_get_shm_limits_p (&server, &data.shm_limits); - glibtop_output (sizeof (glibtop_shm_limits), - &data.shm_limits); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_MSG_LIMITS - case GLIBTOP_CMND_MSG_LIMITS: - glibtop_get_msg_limits_p (&server, &data.msg_limits); - glibtop_output (sizeof (glibtop_msg_limits), - &data.msg_limits); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_SEM_LIMITS - case GLIBTOP_CMND_SEM_LIMITS: - glibtop_get_sem_limits_p (&server, &data.sem_limits); - glibtop_output (sizeof (glibtop_sem_limits), - &data.sem_limits); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_PROCLIST - case GLIBTOP_CMND_PROCLIST: - ptr = glibtop_get_proclist_p (&server, &data.proclist); - glibtop_output (sizeof (glibtop_proclist), - &data.proclist); - glibtop_output (data.proclist.total, ptr); - if (ptr) free (ptr); - break; -#endif -#if GLIBTOP_SUID_PROC_STATE - case GLIBTOP_CMND_PROC_STATE: - memcpy (&pid, parameter, sizeof (pid_t)); - glibtop_get_proc_state_p - (&server, &data.proc_state, pid); - glibtop_output (sizeof (glibtop_proc_state), - &data.proc_state); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_PROC_UID - case GLIBTOP_CMND_PROC_UID: - memcpy (&pid, parameter, sizeof (pid_t)); - glibtop_get_proc_uid_p - (&server, &data.proc_uid, pid); - glibtop_output (sizeof (glibtop_proc_uid), - &data.proc_uid); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_PROC_MEM - case GLIBTOP_CMND_PROC_MEM: - memcpy (&pid, parameter, sizeof (pid_t)); - glibtop_get_proc_mem_p - (&server, &data.proc_mem, pid); - glibtop_output (sizeof (glibtop_proc_mem), - &data.proc_mem); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_PROC_TIME - case GLIBTOP_CMND_PROC_TIME: - memcpy (&pid, parameter, sizeof (pid_t)); - glibtop_get_proc_time_p - (&server, &data.proc_time, pid); - glibtop_output (sizeof (glibtop_proc_time), - &data.proc_time); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_PROC_SIGNAL - case GLIBTOP_CMND_PROC_SIGNAL: - memcpy (&pid, parameter, sizeof (pid_t)); - glibtop_get_proc_signal_p - (&server, &data.proc_signal, pid); - glibtop_output (sizeof (glibtop_proc_signal), - &data.proc_signal); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_PROC_KERNEL - case GLIBTOP_CMND_PROC_KERNEL: - memcpy (&pid, parameter, sizeof (pid_t)); - glibtop_get_proc_kernel_p - (&server, &data.proc_kernel, pid); - glibtop_output (sizeof (glibtop_proc_kernel), - &data.proc_kernel); - glibtop_output (0, NULL); - break; -#endif -#if GLIBTOP_SUID_PROC_SEGMENT - case GLIBTOP_CMND_PROC_SEGMENT: - memcpy (&pid, parameter, sizeof (pid_t)); - glibtop_get_proc_segment_p - (&server, &data.proc_segment, pid); - glibtop_output (sizeof (glibtop_proc_segment), - &data.proc_segment); - glibtop_output (0, NULL); - break; -#endif - default: - _exit(1); - } - } - _exit(0); -} diff --git a/src/server/output.c b/src/server/output.c deleted file mode 100644 index 9fa98655..00000000 --- a/src/server/output.c +++ /dev/null @@ -1,31 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the Gnome Top Library. - Contributed by Martin Baulig , April 1998. - - The Gnome Top Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The Gnome Top Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -void -glibtop_output (size_t size, const void *buf) -{ - if (write (1, &size, sizeof (size_t)) < 0) - _exit (2); - if (write (1, buf, size) < 0) - _exit (2); -} diff --git a/src/server/version.c b/src/server/version.c deleted file mode 100644 index 3e21f55a..00000000 --- a/src/server/version.c +++ /dev/null @@ -1,31 +0,0 @@ -/* $Id$ */ - -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the Gnome Top Library. - Contributed by Martin Baulig , April 1998. - - The Gnome Top Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The Gnome Top Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#include - -void -glibtop_version (void) -{ - char buffer [BUFSIZ]; - - sprintf (buffer, "%s server %s ready.\n", PACKAGE, VERSION); - glibtop_output (strlen (buffer), buffer); -}