From f07d649783487d2ba11dee8e79de5c017cd8a330 Mon Sep 17 00:00:00 2001 From: deraadt Date: Wed, 11 Sep 1996 19:15:28 +0000 Subject: [PATCH] revoke privs at start; tested by fenner@parc.xerox.com --- usr.sbin/map-mbone/mapper.c | 13 +++++++------ usr.sbin/mrinfo/mrinfo.c | 10 ++++++---- usr.sbin/mrouted/main.c | 5 ++--- usr.sbin/mtrace/mtrace.c | 10 +++------- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/usr.sbin/map-mbone/mapper.c b/usr.sbin/map-mbone/mapper.c index 7a273d01aee..43134c69671 100644 --- a/usr.sbin/map-mbone/mapper.c +++ b/usr.sbin/map-mbone/mapper.c @@ -844,13 +844,16 @@ int main(argc, argv) { int flood = FALSE, graph = FALSE; - setlinebuf(stderr); - if (geteuid() != 0) { - fprintf(stderr, "must be root\n"); - exit(1); + fprintf(stderr, "map-mbone: must be root\n"); + exit(1); } + init_igmp(); + setuid(getuid()); + + setlinebuf(stderr); + argv++, argc--; while (argc > 0 && argv[0][0] == '-') { switch (argv[0][1]) { @@ -899,8 +902,6 @@ int main(argc, argv) if (debug) fprintf(stderr, "Debug level %u\n", debug); - init_igmp(); - { /* Find a good local address for us. */ int udp; struct sockaddr_in addr; diff --git a/usr.sbin/mrinfo/mrinfo.c b/usr.sbin/mrinfo/mrinfo.c index e8cfc4f091d..692b5250326 100644 --- a/usr.sbin/mrinfo/mrinfo.c +++ b/usr.sbin/mrinfo/mrinfo.c @@ -336,12 +336,16 @@ main(argc, argv) char *host; int curaddr; - setlinebuf(stderr); - if (geteuid() != 0) { fprintf(stderr, "mrinfo: must be root\n"); exit(1); } + + init_igmp(); + setuid(getuid()); + + setlinebuf(stderr); + argv++, argc--; while (argc > 0 && argv[0][0] == '-') { switch (argv[0][1]) { @@ -389,8 +393,6 @@ main(argc, argv) if (debug) fprintf(stderr, "Debug level %u\n", debug); - init_igmp(); - /* Check all addresses; mrouters often have unreachable interfaces */ for (curaddr = 0; hp->h_addr_list[curaddr] != NULL; curaddr++) { memcpy(&target_addr, hp->h_addr_list[curaddr], hp->h_length); diff --git a/usr.sbin/mrouted/main.c b/usr.sbin/mrouted/main.c index 7a3eaff086d..8e3bd4b1cc7 100644 --- a/usr.sbin/mrouted/main.c +++ b/usr.sbin/mrouted/main.c @@ -33,7 +33,7 @@ #ifndef lint static char rcsid[] = - "@(#) $Id: main.c,v 1.3 1995/12/19 17:48:04 deraadt Exp $"; + "@(#) $Id: main.c,v 1.4 1996/09/11 19:15:33 deraadt Exp $"; #endif extern char *configfilename; @@ -112,12 +112,11 @@ main(argc, argv) int index, block; #endif - setlinebuf(stderr); - if (geteuid() != 0) { fprintf(stderr, "must be root\n"); exit(1); } + setlinebuf(stderr); argv++, argc--; while (argc > 0 && *argv[0] == '-') { diff --git a/usr.sbin/mtrace/mtrace.c b/usr.sbin/mtrace/mtrace.c index 6f8323ad061..12ee0819ae0 100644 --- a/usr.sbin/mtrace/mtrace.c +++ b/usr.sbin/mtrace/mtrace.c @@ -52,7 +52,7 @@ #ifndef lint static char rcsid[] = - "@(#) $Id: mtrace.c,v 1.2 1995/12/14 01:46:22 deraadt Exp $"; + "@(#) $Id: mtrace.c,v 1.3 1996/09/11 19:15:36 deraadt Exp $"; #endif #include @@ -1165,10 +1165,8 @@ char *argv[]; int waittime; int seed; - if (geteuid() != 0) { - fprintf(stderr, "mtrace: must be root\n"); - exit(1); - } + init_igmp(); + setuid(getuid()); argv++, argc--; if (argc == 0) goto usage; @@ -1306,8 +1304,6 @@ Usage: mtrace [-Mlnps] [-w wait] [-m max_hops] [-q nqueries] [-g gateway]\n\ exit(1); } - init_igmp(); - /* * Set useful defaults for as many parameters as possible. */ -- 2.20.1