From 2cae8c9d5fa675b608afb91c842294428a9546e0 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 13 Apr 2024 10:33:34 +0100 Subject: [PATCH] Fix ircv3_extjwt generating tokens for private/secret channels. --- 3/m_ircv3_extjwt.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/3/m_ircv3_extjwt.cpp b/3/m_ircv3_extjwt.cpp index bfc85b58..a6c60c2b 100644 --- a/3/m_ircv3_extjwt.cpp +++ b/3/m_ircv3_extjwt.cpp @@ -227,11 +227,13 @@ class CommandExtJWT CXX11_FINAL // Is the user expecting a user token or a channel token? Channel* chan = NULL; + Membership* memb = NULL; if (parameters[0] != "*") { // Chec that the target channel actually exists. chan = ServerInstance->FindChan(parameters[0]); - if (!chan || chan->IsModeSet(privatemode) || chan->IsModeSet(secretmode)) + memb = chan ? chan->GetUser(user) : NULL; + if (!chan || (!memb && (chan->IsModeSet(privatemode) || chan->IsModeSet(secretmode)))) { // The target channel does not exist. user->WriteNumeric(Numerics::NoSuchChannel(parameters[0])); @@ -294,7 +296,6 @@ class CommandExtJWT CXX11_FINAL writer.String(chan->name); writer.Key("joined"); - Membership* memb = chan->GetUser(user); writer.Uint64(memb ? ext.get(memb) : 0); writer.Key("cmodes");