repo: ngircd action: commit revision: path_from: revision_from: 12cd554af1709c44f35024d7d2fc368fb22f133d: path_to: revision_to:
commit 12cd554af1709c44f35024d7d2fc368fb22f133d Author: Ali ShemiranDate: Fri May 9 21:47:31 2008 +0200 Fix secret channel information leak /who on a secret channel that the user is not a member of now returns proper RPL_ENDOFWHO_MSG instead of nothing. diff --git a/ChangeLog b/ChangeLog
--- 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.
diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c
--- a/src/ngircd/irc-info.c
+++ b/src/ngircd/irc-info.c
@@ -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)) {
diff --git a/src/testsuite/ngircd-test.conf b/src/testsuite/ngircd-test.conf
--- a/src/testsuite/ngircd-test.conf +++ b/src/testsuite/ngircd-test.conf @@ -28,5 +28,10 @@ Name = #TopicChannel Modes = t Topic = the topic + +[CHANNEL] + Name = #SecretChannel + Modes = s + Topic = A secret Channel # -eof- diff --git a/src/testsuite/who-test.e b/src/testsuite/who-test.e
--- a/src/testsuite/who-test.e
+++ b/src/testsuite/who-test.e
@@ -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 {
-----END OF PAGE-----