From: Pami Ketolainen Date: Wed, 25 Nov 2015 17:24:32 +0000 (+0000) Subject: Bug 1227455 - Multiselect parameters (type 'm') are not read correctly from the new... X-Git-Tag: release-5.1.1~143 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7027d7998e3ae3e3b3f5450f28ff50ddca94b951;p=thirdparty%2Fbugzilla.git Bug 1227455 - Multiselect parameters (type 'm') are not read correctly from the new JSON storage format r/a=dkl --- diff --git a/Bugzilla/Config.pm b/Bugzilla/Config.pm index 0d61abb7de..5dfe2e37d9 100644 --- a/Bugzilla/Config.pm +++ b/Bugzilla/Config.pm @@ -309,7 +309,13 @@ sub read_param_file { } # JSON::XS doesn't detaint data for us. foreach my $key (keys %params) { - trick_taint($params{$key}) if defined $params{$key}; + if (ref($params{$key}) eq "ARRAY") { + foreach my $item (@{$params{$key}}) { + trick_taint($item); + } + } else { + trick_taint($params{$key}) if defined $params{$key}; + } } } elsif ($ENV{'SERVER_SOFTWARE'}) { diff --git a/Bugzilla/Config/Common.pm b/Bugzilla/Config/Common.pm index 6f0c0d4705..6e8ae7b61b 100644 --- a/Bugzilla/Config/Common.pm +++ b/Bugzilla/Config/Common.pm @@ -44,7 +44,10 @@ sub check_multi { return ""; } elsif ($param->{'type'} eq 'm' || $param->{'type'} eq 'o') { - foreach my $chkParam (split(',', $value)) { + if (ref($value) ne "ARRAY") { + $value = [split(',', $value)] + } + foreach my $chkParam (@$value) { unless (scalar(grep {$_ eq $chkParam} (@{$param->{'choices'}}))) { return "Invalid choice '$chkParam' for multi-select list param '$param->{'name'}'"; }