From 491cb2aa2e596b8a24299a286f77afa20d266d6d Mon Sep 17 00:00:00 2001 From: Andrew Miller Date: Sun, 21 Apr 2002 10:52:09 +0000 Subject: [PATCH] Author: Andrew Miller 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 | 4 ++++ ircd/ircd_relay.c | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6772e20..9ea1b81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2002-21-05 Andrew Miller + * ircd/ircd_relay.c: stop an information leak about the + the network topography from relayed messages. + 2002-04-19 Alex Badea * ircd/m_who.c (m_who): disallow non-opers to /who server.name diff --git a/ircd/ircd_relay.c b/ircd/ircd_relay.c index eae5e6f..d499050 100644 --- a/ircd/ircd_relay.c +++ b/ircd/ircd_relay.c @@ -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 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; } -- 2.20.1