about summary refs log tree commit homepage
path: root/lib/PublicInbox/NNTPD.pm
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2020-06-10 07:03:59 +0000
committerEric Wong <e@yhbt.net>2020-06-13 07:55:45 +0000
commita7018ba43dec712675d21ace5ea1e19d901fdb0f (patch)
tree0f1c7bf7027b803c092925784868086e1bfa36a8 /lib/PublicInbox/NNTPD.pm
parent1f808e4bd5a8e4ad15272a26e8cd3a79b0a06510 (diff)
downloadpublic-inbox-a7018ba43dec712675d21ace5ea1e19d901fdb0f.tar.gz
We'll be using newsgroup names as mailbox names for IMAP,
too, so ensure we don't send wonky characters in responses.

I doubt this affects any real-world instances, but a BOFH could
choose strange names to cause grief for clients.
Diffstat (limited to 'lib/PublicInbox/NNTPD.pm')
-rw-r--r--lib/PublicInbox/NNTPD.pm6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/PublicInbox/NNTPD.pm b/lib/PublicInbox/NNTPD.pm
index 451f4d41..b8ec84ed 100644
--- a/lib/PublicInbox/NNTPD.pm
+++ b/lib/PublicInbox/NNTPD.pm
@@ -41,6 +41,12 @@ sub refresh_groups () {
                 if (ref $ngname) {
                         warn 'multiple newsgroups not supported: '.
                                 join(', ', @$ngname). "\n";
+                # Newsgroup name needs to be compatible with RFC 3977
+                # wildmat-exact and RFC 3501 (IMAP) ATOM-CHAR.
+                # Leave out a few chars likely to cause problems or conflicts:
+                # '|', '<', '>', ';', '#', '$', '&',
+                } elsif ($ngname =~ m![^A-Za-z0-9/_\.\-\~\@\+\=:]!) {
+                        warn "newsgroup name invalid: `$ngname'\n";
                 } elsif ($ng->nntp_usable) {
                         # Only valid if msgmap and search works
                         $new->{$ngname} = $ng;