Reject malformed URls with no channel.
authorEric S. Raymond <esr@thyrsus.com>
Mon, 1 Oct 2012 04:40:50 +0000 (00:40 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Mon, 1 Oct 2012 04:40:50 +0000 (00:40 -0400)
irkerd

diff --git a/irkerd b/irkerd
index 8172edf8762e7d899199164299ccaf130238f127..a89d78cc3fe00c9e6374a1358eb5e3d8cb8e8891 100755 (executable)
--- a/irkerd
+++ b/irkerd
@@ -240,6 +240,9 @@ class Target():
         self.servername = irchost
         self.channel = parsed.path.lstrip('/')
         self.port = int(ircport)
+    def valid(self):
+        "Both components must be present for a valid target."
+        self.servername and self.channel
     def server(self):
         "Return a hashable tuple representing the destination server."
         return (self.servername, self.port)
@@ -351,6 +354,8 @@ class Irker:
                             self.logerr("malformed request - unexpected type: %s" % repr(request))
                         else:
                             target = Target(url)
+                            if not target.valid():
+                                return
                             if target.server() not in self.servers:
                                 self.servers[target.server()] = Dispatcher(self, target.servername, target.port)
                             self.servers[target.server()].dispatch(target.channel, message)