]> arthur.barton.de Git - ngircd-alex.git/commitdiff
Fix secret channel information leak
authorAli Shemiran <ashemira@ucsd.edu>
Fri, 9 May 2008 19:47:31 +0000 (21:47 +0200)
committerFlorian Westphal <fw@strlen.de>
Fri, 9 May 2008 19:47:31 +0000 (21:47 +0200)
/who on a secret channel that the user is not a member of
now returns proper RPL_ENDOFWHO_MSG instead of nothing.

ChangeLog
src/ngircd/irc-info.c
src/testsuite/ngircd-test.conf
src/testsuite/who-test.e

index 64807e7fec6e2367927f93b1e83c241a09e03f7b..6213d7a13c5fb5d0ed7e2cd8f880e50e872d1003 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -12,6 +12,8 @@
 
 ngIRCd-dev
 
+  - Fix Bug: 85: "WHO #SecretChannel" that user is not a member of now returns
+    proper RPL_ENDOFWHO_MSG instead of nothing. (Ali Shemiran)
   - Implemented IRC commands SERVICE, SERVLIST, and SQUERY as dummy functions
     to be even more RFC-compliant. Closes bug 74.
   - Fixed Bug 75: KICK now handles comma-delimited lists.
index 93c43f6a35744f65c01ec054cec00f37d839be21..86e1ace2a56ef0efe49fcce8580ab09e60b50ca2 100644 (file)
@@ -738,7 +738,7 @@ IRC_Send_WHO(CLIENT *Client, CHANNEL *Chan, bool OnlyOps)
 
        /* Secret channel? */
        if (!is_member && strchr(Channel_Modes(Chan), 's'))
-               return CONNECTED;
+               return IRC_WriteStrClient(Client, RPL_ENDOFWHO_MSG, Client_ID(Client), Channel_Name(Chan));
 
        cl2chan = Channel_FirstMember(Chan);
        for (; cl2chan ; cl2chan = Channel_NextMember(Chan, cl2chan)) {
index eeace761a0a9d70a1414a4cb7b2b4a4a6a42ac5f..4d918e0eec1d0975e17adfe387a1c9fa6efca096 100644 (file)
        Name = #TopicChannel
        Modes = t
        Topic = the topic
+       
+[CHANNEL]
+       Name = #SecretChannel
+       Modes = s
+       Topic = A secret Channel
 
 # -eof-
index aafa7956cee5ebeacc4538796d05f80559967ebe..2e1484479195988d00f14772b42e00f6d3ac9d91 100644 (file)
@@ -152,6 +152,16 @@ expect {
        timeout { exit 1 }
        ":ngircd.test.server 352 nick \* * localhost ngircd.test.server nick H\* :0 Real Name"
 }
+expect {
+       timeout { exit 1 }
+       "315"
+}
+
+send "who #SecretChannel\r"
+expect {
+       timeout { exit 1 }
+       "315"
+}
 
 send "quit\r"
 expect {