diff options
| author | Ali Shemiran <ashemira@ucsd.edu> | 2008-05-09 21:47:31 +0200 |
|---|---|---|
| committer | Florian Westphal <fw@strlen.de> | 2008-05-09 21:47:31 +0200 |
| commit | 12cd554af1709c44f35024d7d2fc368fb22f133d (patch) | |
| tree | 5548f1efa59192570ed2a9c3dada5f63133c070e | |
| parent | 5cf5ba31eb0cae6c28d5754f6e62956f83582b06 (diff) | |
| download | ngircd-12cd554af1709c44f35024d7d2fc368fb22f133d.tar.gz ngircd-12cd554af1709c44f35024d7d2fc368fb22f133d.zip | |
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.
| -rw-r--r-- | ChangeLog | 2 | ||||
| -rw-r--r-- | src/ngircd/irc-info.c | 2 | ||||
| -rw-r--r-- | src/testsuite/ngircd-test.conf | 5 | ||||
| -rw-r--r-- | src/testsuite/who-test.e | 10 |
4 files changed, 18 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 64807e7f..6213d7a1 100644 --- 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 index 93c43f6a..86e1ace2 100644 --- 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 index eeace761..4d918e0e 100644 --- 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 index aafa7956..2e148447 100644 --- 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 { |