summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authorfenner <fenner@FreeBSD.org>1996-08-13 16:28:59 +0000
committerfenner <fenner@FreeBSD.org>1996-08-13 16:28:59 +0000
commit5353c9c28576d84c8560a7c6a4bdedead2448d47 (patch)
tree68eef1d5c4006e9cb5a33168f78be38a0580264b /usr.sbin
parentf82a6cb0ffe56ef2f579cd57944dee76924951fc (diff)
downloadFreeBSD-src-5353c9c28576d84c8560a7c6a4bdedead2448d47.zip
FreeBSD-src-5353c9c28576d84c8560a7c6a4bdedead2448d47.tar.gz
Fix last commit (and PR bin/1489) by creating both sockets before
setuid().
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/traceroute/traceroute.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/usr.sbin/traceroute/traceroute.c b/usr.sbin/traceroute/traceroute.c
index ccdc7fd..e39be38 100644
--- a/usr.sbin/traceroute/traceroute.c
+++ b/usr.sbin/traceroute/traceroute.c
@@ -1,6 +1,6 @@
#ifndef lint
static char *rcsid =
- "@(#)$Header: /home/ncvs/src/usr.sbin/traceroute/traceroute.c,v 1.5 1996/03/13 08:04:29 pst Exp $ (LBL)";
+ "@(#)$Header: /home/ncvs/src/usr.sbin/traceroute/traceroute.c,v 1.6 1996/08/09 06:00:53 fenner Exp $ (LBL)";
#endif
/*
@@ -303,8 +303,10 @@ main(int argc, char **argv)
*/
pe = getprotobyname("icmp");
if (pe) {
- s = socket(AF_INET, SOCK_RAW, pe->p_proto);
- sockerrno = errno;
+ if ((s = socket(AF_INET, SOCK_RAW, pe->p_proto)) < 0)
+ sockerrno = errno;
+ else if ((sndsock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0)
+ sockerrno = errno;
}
setuid(getuid());
@@ -476,7 +478,8 @@ main(int argc, char **argv)
(void) setsockopt(s, SOL_SOCKET, SO_DONTROUTE,
(char *)&on, sizeof(on));
- if ((sndsock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) {
+ if (sndsock < 0) {
+ errno = sockerrno;
perror("traceroute: raw socket");
exit(5);
}
OpenPOWER on IntegriCloud