From 59438d115d1cf52d12258b5d94bae5219daaae41 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 12 Apr 2014 01:06:58 +0000 Subject: cgi: ensure we unescape MIDs correctly in URLs MIDs may have strange characters in them, so we need to handle escaping/unescaping properly to avoid broken links or worse. --- t/cgi.t | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) (limited to 't') diff --git a/t/cgi.t b/t/cgi.t index 39242bce..3ae87981 100644 --- a/t/cgi.t +++ b/t/cgi.t @@ -39,9 +39,9 @@ my $cfgpfx = "publicinbox.test"; } } +my $failbox = "$home/fail.mbox"; +local $ENV{PI_FAILBOX} = $failbox; { - my $failbox = "$home/fail.mbox"; - local $ENV{PI_FAILBOX} = $failbox; local $ENV{HOME} = $home; local $ENV{RECIPIENT} = $addr; @@ -126,9 +126,35 @@ EOF # more checks in t/feed.t } +# message-id pages { local $ENV{HOME} = $home; - my $res = cgi_run("/test/m/blahblah\@example.com.txt"); + my $slashy_mid = 'slashy/asdf@example.com'; + my $reply = Email::Simple->new(< +To: Me +Cc: $addr +In-Reply-To: +Message-Id: <$slashy_mid> +Subject: Re: hihi +Date: Thu, 01 Jan 1970 00:00:01 +0000 + +slashy +EOF + my $in = $reply->as_string; + + { + local $ENV{HOME} = $home; + local $ENV{RECIPIENT} = $addr; + run_with_env({PATH => $main_path}, [$mda], \$in); + } + local $ENV{GIT_DIR} = $maindir; + + my $res = cgi_run("/test/m/slashy%2fasdf%40example.com.txt"); + like($res->{body}, qr/Message-Id: <\Q$slashy_mid\E>/, + "slashy mid.txt hit"); + + $res = cgi_run("/test/m/blahblah\@example.com.txt"); like($res->{body}, qr/Message-Id: /, "mid.txt hit"); @@ -151,6 +177,13 @@ EOF like($res->{head}, qr/Status: 404 Not Found/, "mid.html miss"); } +{ + local $ENV{HOME} = $home; + my $res = cgi_run("/test/"); + like($res->{body}, qr/slashy%2Fasdf%40example\.com/, + "slashy URL generated correctly"); +} + done_testing(); sub run_with_env { -- cgit v1.2.3-24-ge0c7