From 891e29204e3fc3abc89ff12bd68cc09323ab0648 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Sat, 21 Jun 2025 22:17:45 -0400 Subject: [PATCH] metadata spec update: disallow colon entirely --- irc/metadata.go | 3 +-- irc/metadata_test.go | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/irc/metadata.go b/irc/metadata.go index b19962c0..8485862d 100644 --- a/irc/metadata.go +++ b/irc/metadata.go @@ -105,11 +105,10 @@ func syncChannelMetadata(server *Server, rb *ResponseBuffer, channel *Channel) { } } -var metadataEvilCharsRegexp = regexp.MustCompile("[^A-Za-z0-9_./:-]+") +var metadataEvilCharsRegexp = regexp.MustCompile("[^A-Za-z0-9_./-]+") func metadataKeyIsEvil(key string) bool { return len(key) == 0 || // key needs to contain stuff - key[0] == ':' || // key can't start with a colon metadataEvilCharsRegexp.MatchString(key) // key can't contain the stuff it can't contain } diff --git a/irc/metadata_test.go b/irc/metadata_test.go index 93942abb..91de213a 100644 --- a/irc/metadata_test.go +++ b/irc/metadata_test.go @@ -8,9 +8,10 @@ func TestKeyCheck(t *testing.T) { isEvil bool }{ {"ImNormal", false}, + {"", true}, {":imevil", true}, {"key£with$not%allowed^chars", true}, - {"key.that:s_completely/normal-and.fine", false}, + {"key.thats_completely/normal-and.fine", false}, } for _, c := range cases {