Fix last commit (and PR bin/1489) by creating both sockets before
setuid().
This commit is contained in:
parent
298f0ef3a2
commit
aba3a4ce1b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=17582
@ -1,6 +1,6 @@
|
|||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char *rcsid =
|
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
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -303,8 +303,10 @@ main(int argc, char **argv)
|
|||||||
*/
|
*/
|
||||||
pe = getprotobyname("icmp");
|
pe = getprotobyname("icmp");
|
||||||
if (pe) {
|
if (pe) {
|
||||||
s = socket(AF_INET, SOCK_RAW, pe->p_proto);
|
if ((s = socket(AF_INET, SOCK_RAW, pe->p_proto)) < 0)
|
||||||
sockerrno = errno;
|
sockerrno = errno;
|
||||||
|
else if ((sndsock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0)
|
||||||
|
sockerrno = errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
setuid(getuid());
|
setuid(getuid());
|
||||||
@ -476,7 +478,8 @@ main(int argc, char **argv)
|
|||||||
(void) setsockopt(s, SOL_SOCKET, SO_DONTROUTE,
|
(void) setsockopt(s, SOL_SOCKET, SO_DONTROUTE,
|
||||||
(char *)&on, sizeof(on));
|
(char *)&on, sizeof(on));
|
||||||
|
|
||||||
if ((sndsock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) < 0) {
|
if (sndsock < 0) {
|
||||||
|
errno = sockerrno;
|
||||||
perror("traceroute: raw socket");
|
perror("traceroute: raw socket");
|
||||||
exit(5);
|
exit(5);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user