Check the size of the IP address reutrned from gethostbyname2, per PR

2578 from Julian A.  Likely not strictly needed, but it doesn't hurt
and protects ping against possible buffer overflows if the resolver
were to return large IP addresses.
This commit is contained in:
Warner Losh 1997-03-03 09:50:21 +00:00
parent ddd79a9790
commit 1ffae4a6dd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=23327

View File

@ -45,7 +45,7 @@ static const char copyright[] =
static char sccsid[] = "@(#)ping.c 8.1 (Berkeley) 6/5/93";
*/
static const char rcsid[] =
"$Id: ping.c,v 1.18 1997/03/02 06:32:40 imp Exp $";
"$Id: ping.c,v 1.19 1997/03/02 20:01:13 imp Exp $";
#endif /* not lint */
/*
@ -324,6 +324,8 @@ main(argc, argv)
target, hstrerror(h_errno));
to->sin_len = sizeof *to;
if (hp->h_length > sizeof(to->sin_addr))
errx(1,"gethostbyname2 returned an illegal address");
memcpy(&to->sin_addr, hp->h_addr_list[0], sizeof to->sin_addr);
(void)strncpy(hnamebuf, hp->h_name, sizeof(hnamebuf) - 1);
hnamebuf[(sizeof hnamebuf) - 1] = '\0';