diff options
author | itojun <itojun@openbsd.org> | 2002-08-08 00:28:09 +0000 |
---|---|---|
committer | itojun <itojun@openbsd.org> | 2002-08-08 00:28:09 +0000 |
commit | fbf49a8e39d4f8cc271d6c7f4ec7933490aaf4b5 (patch) | |
tree | 646810cbc30680d4bbda2a7b4ac91a9bca2f25e8 /usr.sbin/mrinfo | |
parent | bah, use mode 0 here. (diff) | |
download | wireguard-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.c | 11 |
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); |