summaryrefslogtreecommitdiffstats
path: root/usr.sbin/mrinfo
diff options
context:
space:
mode:
authoritojun <itojun@openbsd.org>2002-08-08 00:28:09 +0000
committeritojun <itojun@openbsd.org>2002-08-08 00:28:09 +0000
commitfbf49a8e39d4f8cc271d6c7f4ec7933490aaf4b5 (patch)
tree646810cbc30680d4bbda2a7b4ac91a9bca2f25e8 /usr.sbin/mrinfo
parentbah, use mode 0 here. (diff)
downloadwireguard-openbsd-fbf49a8e39d4f8cc271d6c7f4ec7933490aaf4b5.tar.xz
wireguard-openbsd-fbf49a8e39d4f8cc271d6c7f4ec7933490aaf4b5.zip
don't use dynamically-generated printf format string. more picky
about gethostby* result. check fd_set overrun. from xs@kittenz.org
Diffstat (limited to 'usr.sbin/mrinfo')
-rw-r--r--usr.sbin/mrinfo/mrinfo.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/usr.sbin/mrinfo/mrinfo.c b/usr.sbin/mrinfo/mrinfo.c
index a856522af37..136d549cea4 100644
--- a/usr.sbin/mrinfo/mrinfo.c
+++ b/usr.sbin/mrinfo/mrinfo.c
@@ -140,7 +140,6 @@ void
log(int severity, int syserr, char *format, ...)
{
va_list ap;
- char fmt[100];
switch (debug) {
case 0:
@@ -153,12 +152,10 @@ log(int severity, int syserr, char *format, ...)
if (severity > LOG_INFO)
return;
default:
- fmt[0] = '\0';
if (severity == LOG_WARNING)
- strcat(fmt, "warning - ");
- strncat(fmt, format, 80);
+ fprintf(stderr, "warning - ");
va_start(ap, format);
- vfprintf(stderr, fmt, ap);
+ vfprintf(stderr, format, ap);
va_end(ap);
if (syserr == 0)
fputc('\n', stderr);
@@ -386,7 +383,7 @@ main(argc, argv)
} else
hp = gethostbyname(host);
- if (hp == NULL) {
+ if (hp == NULL || hp->h_length != sizeof(target_addr)) {
fprintf(stderr, "mrinfo: %s: no such host\n", argv[0]);
exit(1);
}
@@ -442,6 +439,8 @@ main(argc, argv)
int ipdatalen, iphdrlen, igmpdatalen;
FD_ZERO(&fds);
+ if (igmp_socket >= FD_SETSIZE)
+ log(LOG_ERR, 0, "descriptor too big");
FD_SET(igmp_socket, &fds);
gettimeofday(&now, 0);