Author: Andrew Miller <a1kmm@mware.virtualave.net>
authorAndrew Miller <a1kmm@amxl.com>
Sun, 21 Apr 2002 10:52:09 +0000 (10:52 +0000)
committerAndrew Miller <a1kmm@amxl.com>
Sun, 21 Apr 2002 10:52:09 +0000 (10:52 +0000)
Log message:
Ensure that directed messages cannot be used to find out whether a server
broke away in a split.
This should be backported.

git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@750 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/ircd_relay.c

index 6772e2049d0edf0cdc5588571562b55bc59d5e65..9ea1b817a3250cc61fe38cd2b1f8194b280c0a0d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2002-21-05 Andrew Miller <a1kmm@mware.virtualave.net>
+       * ircd/ircd_relay.c: stop an information leak about the
+       the network topography from relayed messages.
+
 2002-04-19  Alex Badea  <vampire@p16.pub.ro>
 
        * ircd/m_who.c (m_who): disallow non-opers to /who server.name
index eae5e6f40ca6fe07c9cf0dea17fe8f9a36b953b3..d49905070a80b79a0e0d65f0fcbb8eb835b96164 100644 (file)
@@ -158,14 +158,17 @@ void relay_directed_message(struct Client* sptr, char* name, char* server, const
   assert(0 != text);
   assert(0 != server);
 
-  if (0 == (acptr = FindServer(server + 1))) {
+  if ((acptr = FindServer(server + 1)) == NULL ||
+      !IsChannelService(acptr))
+  {
     send_reply(sptr, ERR_NOSUCHNICK, name);
     return;
   }
   /*
    * NICK[%host]@server addressed? See if <server> is me first
    */
-  if (!IsMe(acptr)) {
+  if (!IsMe(acptr))
+  {
     sendcmdto_one(sptr, CMD_PRIVATE, acptr, "%s :%s", name, text);
     return;
   }
@@ -188,10 +191,14 @@ void relay_directed_message(struct Client* sptr, char* name, char* server, const
    */
   if (!(acptr = FindUser(name)) || !MyUser(acptr) ||
       (!EmptyString(host) && 0 != match(host, cli_user(acptr)->host)) ||
-      !IsChannelService(acptr)) {
-#if 0
+      !IsChannelService(acptr))
+  {
+    /*
+     * By this stage we might as well not bother because they will
+     * know that this server is currently linked because of the
+     * increased lag.
+     */
     send_reply(sptr, ERR_NOSUCHNICK, name);
-#endif
     return;
   }