diff -cprN psmisc-18/Makefile psmisc/Makefile *** psmisc-18/Makefile Sun Nov 1 20:07:53 1998 --- psmisc/Makefile Thu May 4 16:49:02 2000 *************** fuser.o: fuser.c comm.h signals.h Makefi *** 25,31 **** --- 25,33 ---- killall.o: killall.c comm.h signals.h Makefile VERSION fuser: fuser.o signals.o + killall: killall.o signals.o + $(CC) $(CFLAGS) $(LDFLAGS) -o killall killall.c signals.c -lvsd pstree: pstree.c comm.h Makefile VERSION $(CC) $(CFLAGS) $(LDFLAGS) -o pstree pstree.c -ltermcap diff -cprN psmisc-18/killall.c psmisc/killall.c *** psmisc-18/killall.c Wed May 6 14:56:48 1998 --- psmisc/killall.c Thu May 4 16:54:15 2000 *************** *** 5,10 **** --- 5,11 ---- #include #include + #include #include #include #include *************** *** 16,22 **** #include "comm.h" #include "signals.h" - #define PROC_BASE "/proc" #define MAX_NAMES (sizeof(unsigned long)*8) --- 17,22 ---- *************** static int kill_all(int signal,int names *** 112,117 **** --- 112,121 ---- } } for (i = 0; i < pids; i++) { + sprintf(path,PROC_BASE "/%d/exe",pid_table[i]); + if (!(file = fopen(path,"r"))) continue; + fclose (file); + sprintf(path,PROC_BASE "/%d/stat",pid_table[i]); if (!(file = fopen(path,"r"))) continue; empty = 0; *************** int main(int argc,char **argv) *** 258,263 **** --- 262,271 ---- { char *name,*walk; int sig_num; + + /* Drop privileges if not the admin user. */ + if (vsd_admin_user (getuid ()) != 1) + seteuid (getuid ()); name = strrchr(*argv,'/'); if (name) name++;