aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPami Ketolainen <pami.ketolainen@gmail.com>2015-11-25 17:24:32 +0000
committerDavid Lawrence <dkl@mozilla.com>2015-11-25 17:26:10 +0000
commit3dbd99b27e6c2abba5462f161305b6413d8cb91d (patch)
tree3f7e078da615439b2134c90704a03800b7909df4
parenta42b9586a19f4f8cee577da2ee68981888126ed0 (diff)
downloadbugs-3dbd99b27e6c2abba5462f161305b6413d8cb91d.tar
bugs-3dbd99b27e6c2abba5462f161305b6413d8cb91d.tar.gz
bugs-3dbd99b27e6c2abba5462f161305b6413d8cb91d.tar.bz2
bugs-3dbd99b27e6c2abba5462f161305b6413d8cb91d.tar.xz
bugs-3dbd99b27e6c2abba5462f161305b6413d8cb91d.zip
Bug 1227455 - Multiselect parameters (type 'm') are not read correctly from the new JSON storage format
r/a=dkl
-rw-r--r--Bugzilla/Config.pm8
-rw-r--r--Bugzilla/Config/Common.pm5
2 files changed, 11 insertions, 2 deletions
diff --git a/Bugzilla/Config.pm b/Bugzilla/Config.pm
index b4ff803bd..1c02d9dda 100644
--- a/Bugzilla/Config.pm
+++ b/Bugzilla/Config.pm
@@ -315,7 +315,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 e8dfe3e9d..bd9b0bf84 100644
--- a/Bugzilla/Config/Common.pm
+++ b/Bugzilla/Config/Common.pm
@@ -45,7 +45,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'}'";
}