Oops, we must unescape each key=value pair in a QUERY_STRING
individually; otherwise we cannot interpret '&' or ';' in
query parameter values.
---
lib/PublicInbox/WWW.pm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm
index 26cd571..60cb443 100644
--- a/lib/PublicInbox/WWW.pm
+++ b/lib/PublicInbox/WWW.pm
@@ -41,11 +41,11 @@ sub call {
# we don't care about multi-value
my %qp = map {
- my ($k, $v) = split('=', $_, 2);
+ my ($k, $v) = split('=', uri_unescape($_), 2);
$v = '' unless defined $v;
$v =~ tr/+/ /;
($k, $v)
- } split(/[&;]/, uri_unescape($env->{QUERY_STRING}));
+ } split(/[&;]/, $env->{QUERY_STRING});
$ctx->{qp} = \%qp;
my $path_info = $env->{PATH_INFO};
--
EW
--
unsubscribe: [email protected]
archive: https://public-inbox.org/meta/