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.
This commit is contained in:
Ali Shemiran 2008-05-09 21:47:31 +02:00 committed by Florian Westphal
parent 5cf5ba31eb
commit 12cd554af1
4 changed files with 18 additions and 1 deletions

View File

@ -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.

View 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)) {

View File

@ -28,5 +28,10 @@
Name = #TopicChannel
Modes = t
Topic = the topic
[CHANNEL]
Name = #SecretChannel
Modes = s
Topic = A secret Channel
# -eof-

View 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 {