]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/dns.cpp
Merge pull request #1018 from SaberUK/insp20+hidekills
[user/henk/code/inspircd.git] / src / dns.cpp
index 977f4bad065846115ee4d45b99208a9153d1881e..14305ccab2f49a2a4e94f94ee67dc543c34e92c2 100644 (file)
@@ -677,7 +677,13 @@ DNSResult DNS::GetResult()
 
                        case DNS_QUERY_AAAA:
                        {
-                               inet_ntop(AF_INET6, data.first, formatted, sizeof(formatted));
+                               if (!inet_ntop(AF_INET6, data.first, formatted, sizeof(formatted)))
+                               {
+                                       std::string ro = req->orig;
+                                       delete req;
+                                       return DNSResult(this_id | ERROR_MASK, "inet_ntop() failed", 0, ro);
+                               }
+
                                resultstr = formatted;
 
                                /* Special case. Sending ::1 around between servers
@@ -694,8 +700,16 @@ DNSResult DNS::GetResult()
                                /* Identical handling to PTR */
 
                        case DNS_QUERY_PTR:
+                       {
                                /* Reverse lookups just come back as char* */
                                resultstr = std::string((const char*)data.first);
+                               if (resultstr.find_first_not_of("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-") != std::string::npos)
+                               {
+                                       std::string ro = req->orig;
+                                       delete req;
+                                       return DNSResult(this_id | ERROR_MASK, "Invalid char(s) in reply", 0, ro);
+                               }
+                       }
                        break;
 
                        default: