From 10da32292fb46f4437188639a4f2cc9d25b0ac26 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Mon, 13 Apr 2026 19:46:10 -0700 Subject: [PATCH] fix missing read permissions checks for METADATA (#2382) These were incorrectly refactored out in #2277. Also group the two write subcommands together, then the three read subcommands. --- irc/handlers.go | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/irc/handlers.go b/irc/handlers.go index 8d657e6b..b7e174cb 100644 --- a/irc/handlers.go +++ b/irc/handlers.go @@ -3269,6 +3269,16 @@ func metadataRegisteredHandler(client *Client, config *Config, subcommand string } } + case "clear": + if !metadataCanIEditThisTarget(client, targetObj) { + noKeyPerms("*") + return + } + + values := targetObj.ClearMetadata() + + playMetadataList(rb, client.Nick(), target, values) + case "get": if !metadataCanISeeThisTarget(client, targetObj) { noKeyPerms("*") @@ -3295,19 +3305,19 @@ func metadataRegisteredHandler(client *Client, config *Config, subcommand string } case "list": - playMetadataList(rb, client.Nick(), target, targetObj.ListMetadata()) - - case "clear": - if !metadataCanIEditThisTarget(client, targetObj) { + if !metadataCanISeeThisTarget(client, targetObj) { noKeyPerms("*") return } - values := targetObj.ClearMetadata() - - playMetadataList(rb, client.Nick(), target, values) + playMetadataList(rb, client.Nick(), target, targetObj.ListMetadata()) case "sync": + if !metadataCanISeeThisTarget(client, targetObj) { + noKeyPerms("*") + return + } + if targetChannel != nil { syncChannelMetadata(server, rb, targetChannel) }