|
|||||||||||
|
strto_ audit in ping(8)
From: Andrushock <andrushock(at)korovino.net>
Date: Mon Dec 09 2002 - 21:00:00 EST
struct sockaddr whereto; /* who to ping */ -struct sockaddr_in whence; /* Which interface we come from */ +struct sockaddr_in whence; /* Which interface we come from */ int datalen = DEFDATALEN; int s; /* socket file descriptor */u_char outpackhdr[IP_MAXPACKET]; /* Max packet size = 65535 */ @@ -195,7 +195,7 @@
int maxsize, fdmasks;
socklen_t maxsizelen;
u_char *datap, *packet;
- char *target, hnamebuf[MAXHOSTNAMELEN];
+ char *cp, *target, hnamebuf[MAXHOSTNAMELEN];
u_char ttl = MAXTTL, loop = 1, df = 0;
int tos = 0;
#ifdef IP_OPTIONS @@ -215,8 +215,11 @@
while ((ch = getopt(argc, argv, "DI:LRS:c:dfh:i:l:np:qrs:T:t:vw:")) != -1)
switch(ch) {
case 'c':
- npackets = strtol(optarg, NULL, 0);
- if (npackets <= 0)
+ errno = 0;
+ cp = NULL;
+ npackets = strtol(optarg, &cp, 10);
+ if (*optarg == '\0' || *cp != '\0' || errno == ERANGE ||
+ npackets <= 0)
errx(1, "bad number of packets to transmit: %s",
optarg);
break;
@@ -1308,23 +1327,23 @@
/* only allow IP version 4 */
if (iph->ip_v != 4)
- return 0;
+ return (0);
/* Only allow ICMP */
if (iph->ip_p != IPPROTO_ICMP)
- return 0;
+ return (0);
icmph = (struct icmp *) (iph + (4 * iph->ip_hl));
/* make sure it is in response to an ECHO request */
if (icmph->icmp_type != 8)
- return 0;
+ return (0);
/* ok, make sure it has the right id on it */
if (icmph->icmp_hun.ih_idseq.icd_id != ident)
- return 0;
+ return (0);
- return 1;
+ return (1);
} void Received on Tue Dec 10 21:02:35 2002 This archive was generated by hypermail 2.1.8 : Wed Aug 23 2006 - 13:29:39 EDT |
||||||||||
|
|||||||||||