projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'collectd-4.4'
[collectd.git]
/
src
/
utils_dns.c
diff --git
a/src/utils_dns.c
b/src/utils_dns.c
index
a412809
..
f2ab337
100644
(file)
--- a/
src/utils_dns.c
+++ b/
src/utils_dns.c
@@
-34,6
+34,7
@@
*/
#include "collectd.h"
*/
#include "collectd.h"
+#include "common.h"
#if HAVE_NETINET_IN_SYSTM_H
# include <netinet/in_systm.h>
#if HAVE_NETINET_IN_SYSTM_H
# include <netinet/in_systm.h>
@@
-384,7
+385,7
@@
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])
- s
trcpy(qh.qname, "."
);
+ s
strncpy (qh.qname, ".", sizeof (qh.qname)
);
while ((t = strchr(qh.qname, '\n')))
*t = ' ';
while ((t = strchr(qh.qname, '\r')))
while ((t = strchr(qh.qname, '\n')))
*t = ' ';
while ((t = strchr(qh.qname, '\r')))
@@
-429,13
+430,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
+463,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
+483,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
+624,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;
@@
-701,7
+705,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
+747,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");
@@
-810,8
+816,7
@@
const char *qtype_str(int t)
case T_ANY: return ("ANY"); /* ... 255 */
#endif /* __BIND >= 19950621 */
default:
case T_ANY: return ("ANY"); /* ... 255 */
#endif /* __BIND >= 19950621 */
default:
- snprintf (buf, 32, "#%i", t);
- buf[31] = '\0';
+ ssnprintf (buf, sizeof (buf), "#%i", t);
return (buf);
}; /* switch (t) */
/* NOTREACHED */
return (buf);
}; /* switch (t) */
/* NOTREACHED */
@@
-838,7
+843,7
@@
const char *opcode_str (int o)
return "Update";
break;
default:
return "Update";
break;
default:
- s
nprintf(buf, 30
, "Opcode%d", o);
+ s
snprintf(buf, sizeof (buf)
, "Opcode%d", o);
return buf;
}
/* NOTREACHED */
return buf;
}
/* NOTREACHED */
@@
-882,8
+887,7
@@
const char *rcode_str (int rcode)
#endif /* RFC2136 rcodes */
#endif /* __BIND >= 19950621 */
default:
#endif /* RFC2136 rcodes */
#endif /* __BIND >= 19950621 */
default:
- snprintf (buf, 32, "RCode%i", rcode);
- buf[31] = '\0';
+ ssnprintf (buf, sizeof (buf), "RCode%i", rcode);
return (buf);
}
/* Never reached */
return (buf);
}
/* Never reached */