revoke privs at start; tested by fenner@parc.xerox.com
authorderaadt <deraadt@openbsd.org>
Wed, 11 Sep 1996 19:15:28 +0000 (19:15 +0000)
committerderaadt <deraadt@openbsd.org>
Wed, 11 Sep 1996 19:15:28 +0000 (19:15 +0000)
usr.sbin/map-mbone/mapper.c
usr.sbin/mrinfo/mrinfo.c
usr.sbin/mrouted/main.c
usr.sbin/mtrace/mtrace.c

index 7a273d0..43134c6 100644 (file)
@@ -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;
index e8cfc4f..692b525 100644 (file)
@@ -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);
index 7a3eaff..8e3bd4b 100644 (file)
@@ -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] == '-') {
index 6f8323a..12ee081 100644 (file)
@@ -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 <netdb.h>
@@ -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.
      */