projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
contrib/php-collection: Add a PHP frontend for graph generation.
[collectd.git]
/
src
/
utils_dns.c
diff --git
a/src/utils_dns.c
b/src/utils_dns.c
index
a412809
..
5316a71
100644
(file)
--- a/
src/utils_dns.c
+++ b/
src/utils_dns.c
@@
-34,6
+34,7
@@
*/
#include "collectd.h"
*/
#include "collectd.h"
+#include "plugin.h"
#if HAVE_NETINET_IN_SYSTM_H
# include <netinet/in_systm.h>
#if HAVE_NETINET_IN_SYSTM_H
# include <netinet/in_systm.h>
@@
-354,7
+355,6
@@
handle_dns(const char *buf, int len,
memcpy(&us, buf + 2, 2);
us = ntohs(us);
memcpy(&us, buf + 2, 2);
us = ntohs(us);
- fprintf (stderr, "Bytes 0, 1: 0x%04hx\n", us);
qh.qr = (us >> 15) & 0x01;
qh.opcode = (us >> 11) & 0x0F;
qh.aa = (us >> 10) & 0x01;
qh.qr = (us >> 15) & 0x01;
qh.opcode = (us >> 11) & 0x0F;
qh.aa = (us >> 10) & 0x01;
@@
-384,13
+384,13
@@
handle_dns(const char *buf, int len,
if (0 != x)
return 0;
if ('\0' == qh.qname[0])
if (0 != x)
return 0;
if ('\0' == qh.qname[0])
- str
cpy(qh.qname, "."
);
+ str
ncpy (qh.qname, ".", sizeof (qh.qname)
);
while ((t = strchr(qh.qname, '\n')))
*t = ' ';
while ((t = strchr(qh.qname, '\r')))
*t = ' ';
for (t = qh.qname; *t; t++)
while ((t = strchr(qh.qname, '\n')))
*t = ' ';
while ((t = strchr(qh.qname, '\r')))
*t = ' ';
for (t = qh.qname; *t; t++)
- *t = tolower(*t);
+ *t = tolower(
(int)
*t);
memcpy(&us, buf + offset, 2);
qh.qtype = ntohs(us);
memcpy(&us, buf + offset, 2);
qh.qtype = ntohs(us);
@@
-429,13
+429,16
@@
static int
handle_ipv6 (struct ip6_hdr *ipv6, int len)
{
char buf[PCAP_SNAPLEN];
handle_ipv6 (struct ip6_hdr *ipv6, int len)
{
char buf[PCAP_SNAPLEN];
- int offset;
+
unsigned
int offset;
int nexthdr;
struct in6_addr s_addr;
struct in6_addr d_addr;
uint16_t payload_len;
int nexthdr;
struct in6_addr s_addr;
struct in6_addr d_addr;
uint16_t payload_len;
+ if (0 > len)
+ return (0);
+
offset = sizeof (struct ip6_hdr);
nexthdr = ipv6->ip6_nxt;
s_addr = ipv6->ip6_src;
offset = sizeof (struct ip6_hdr);
nexthdr = ipv6->ip6_nxt;
s_addr = ipv6->ip6_src;
@@
-459,7
+462,7
@@
handle_ipv6 (struct ip6_hdr *ipv6, int len)
uint16_t ext_hdr_len;
/* Catch broken packets */
uint16_t ext_hdr_len;
/* Catch broken packets */
- if ((offset + sizeof (struct ip6_ext)) > len)
+ if ((offset + sizeof (struct ip6_ext)) >
(unsigned int)
len)
return (0);
/* Cannot handle fragments. */
return (0);
/* Cannot handle fragments. */
@@
-479,7
+482,7
@@
handle_ipv6 (struct ip6_hdr *ipv6, int len)
} /* while */
/* Catch broken and empty packets */
} /* while */
/* Catch broken and empty packets */
- if (((offset + payload_len) > len)
+ if (((offset + payload_len) >
(unsigned int)
len)
|| (payload_len == 0)
|| (payload_len > PCAP_SNAPLEN))
return (0);
|| (payload_len == 0)
|| (payload_len > PCAP_SNAPLEN))
return (0);
@@
-620,7
+623,7
@@
handle_linux_sll (const u_char *pkt, int len)
} *hdr;
uint16_t etype;
} *hdr;
uint16_t etype;
- if (
len < sizeof (struct sll_header
))
+ if (
(0 > len) || ((unsigned int)len < sizeof (struct sll_header)
))
return (0);
hdr = (struct sll_header *) pkt;
return (0);
hdr = (struct sll_header *) pkt;
@@
-645,7
+648,7
@@
void handle_pcap(u_char *udata, const struct pcap_pkthdr *hdr, const u_char *pkt
{
int status;
{
int status;
-
fprintf (stderr,
"handle_pcap (udata = %p, hdr = %p, pkt = %p): hdr->caplen = %i\n",
+
DEBUG (
"handle_pcap (udata = %p, hdr = %p, pkt = %p): hdr->caplen = %i\n",
(void *) udata, (void *) hdr, (void *) pkt,
hdr->caplen);
(void *) udata, (void *) hdr, (void *) pkt,
hdr->caplen);
@@
-682,7
+685,7
@@
void handle_pcap(u_char *udata, const struct pcap_pkthdr *hdr, const u_char *pkt
break;
default:
break;
default:
-
fprintf (stderr, "
unsupported data link type %d\n",
+
ERROR ("handle_pcap:
unsupported data link type %d\n",
pcap_datalink(pcap_obj));
status = 0;
break;
pcap_datalink(pcap_obj));
status = 0;
break;
@@
-701,7
+704,7
@@
const char *qtype_str(int t)
{
static char buf[32];
switch (t) {
{
static char buf[32];
switch (t) {
-#if (defined (__NAMESER)) && (__NAMESER >= 1999100
6
)
+#if (defined (__NAMESER)) && (__NAMESER >= 1999100
1
)
case ns_t_a: return ("A");
case ns_t_ns: return ("NS");
case ns_t_md: return ("MD");
case ns_t_a: return ("A");
case ns_t_ns: return ("NS");
case ns_t_md: return ("MD");
@@
-743,7
+746,9
@@
const char *qtype_str(int t)
case ns_t_dname: return ("DNAME");
case ns_t_sink: return ("SINK");
case ns_t_opt: return ("OPT");
case ns_t_dname: return ("DNAME");
case ns_t_sink: return ("SINK");
case ns_t_opt: return ("OPT");
+# if __NAMESER >= 19991006
case ns_t_tsig: return ("TSIG");
case ns_t_tsig: return ("TSIG");
+# endif
case ns_t_ixfr: return ("IXFR");
case ns_t_axfr: return ("AXFR");
case ns_t_mailb: return ("MAILB");
case ns_t_ixfr: return ("IXFR");
case ns_t_axfr: return ("AXFR");
case ns_t_mailb: return ("MAILB");