diff options
author | Adam <Adam@anope.org> | 2013-05-08 09:50:43 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2013-05-08 09:50:43 -0400 |
commit | 9b07e163c0e1ceed30e72aead2338b47ef2da1b2 (patch) | |
tree | 4c13bd545846700a58c5526c3e4e9a6fdf0afc87 /modules/m_dns.cpp | |
parent | 6859decfb8ed0430e946ff81eca4f9da879f69c9 (diff) |
Make sockaddrs/cidr not throw on invalid ips to give us an easier/cheaper way to test for a valid IP
Diffstat (limited to 'modules/m_dns.cpp')
-rw-r--r-- | modules/m_dns.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/modules/m_dns.cpp b/modules/m_dns.cpp index 9b0157069..ea64da92f 100644 --- a/modules/m_dns.cpp +++ b/modules/m_dns.cpp @@ -151,6 +151,8 @@ class Packet : public Query sockaddrs addrs; addrs.ntop(AF_INET, &a); + if (!addrs.valid()) + throw SocketException("Invalid IP"); record.rdata = addrs.addr(); break; @@ -167,6 +169,8 @@ class Packet : public Query sockaddrs addrs; addrs.ntop(AF_INET6, &a); + if (!addrs.valid()) + throw SocketException("Invalid IP"); record.rdata = addrs.addr(); break; @@ -272,6 +276,8 @@ class Packet : public Query if (q.type == QUERY_PTR) { sockaddrs ip(q.name); + if (!ip.valid()) + throw SocketException("Invalid IP"); if (q.name.find(':') != Anope::string::npos) { @@ -347,6 +353,8 @@ class Packet : public Query throw SocketException("Unable to pack packet"); sockaddrs a(rr.rdata); + if (!a.valid()) + throw SocketException("Invalid IP"); s = htons(4); memcpy(&output[pos], &s, 2); @@ -362,6 +370,8 @@ class Packet : public Query throw SocketException("Unable to pack packet"); sockaddrs a(rr.rdata); + if (!a.valid()) + throw SocketException("Invalid IP"); s = htons(16); memcpy(&output[pos], &s, 2); |