about summary refs log tree commit homepage
path: root/lib/PublicInbox/URIimap.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-09-14 22:10:36 +0000
committerEric Wong <e@80x24.org>2021-09-14 23:18:07 +0000
commit311c711c56e8ba829d0efaf43a8910c904089707 (patch)
treef66bab30376dfeb1666e90cd45f491f0ab3569be /lib/PublicInbox/URIimap.pm
parent68d1da3b1b55ca2b893fab40fa06536f25e45591 (diff)
downloadpublic-inbox-311c711c56e8ba829d0efaf43a8910c904089707.tar.gz
uri_imap: fix ->uidvalidity and ->uid w/ `/' separator
Again, we were failing to account for '/' use in mailbox names :x

Reported-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Link: https://public-inbox.org/meta/20210914210547.akdp4cqmwaheayp5@meerkat.local/
Diffstat (limited to 'lib/PublicInbox/URIimap.pm')
-rw-r--r--lib/PublicInbox/URIimap.pm7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/PublicInbox/URIimap.pm b/lib/PublicInbox/URIimap.pm
index 6907e32a..81644914 100644
--- a/lib/PublicInbox/URIimap.pm
+++ b/lib/PublicInbox/URIimap.pm
@@ -86,7 +86,8 @@ sub uidvalidity { # read/write
                 $$self = uri_join($scheme, $auth, $path, $query, $frag);
         }
         $path =~ s!\A/+!!;
-        $path =~ m!\A[^;/]+;UIDVALIDITY=([1-9][0-9]*)\b!i ? ($1 + 0) : undef;
+        $path =~ m!\A[^;]+;UIDVALIDITY=([1-9][0-9]*)\b!i ?
+                ($1 + 0) : undef;
 }
 
 sub uid {
@@ -97,11 +98,11 @@ sub uid {
                         $path =~ s!/;UID=[^;/]*\b!!i;
                 } else {
                         $path =~ s!/;UID=[^;/]*\b!/;UID=$val!i or
-                                $path .= ";UID=$val";
+                                $path .= "/;UID=$val";
                 }
                 $$self = uri_join($scheme, $auth, $path, $query);
         }
-        $path =~ m!\A/[^/;]+(?:;UIDVALIDITY=[^;/]+)?/;UID=([1-9][0-9]*)\b!i ?
+        $path =~ m!\A/[^;]+(?:;UIDVALIDITY=[^;/]+)?/;UID=([1-9][0-9]*)\b!i ?
                 ($1 + 0) : undef;
 }