diff options
author | Dylan Hardison <dylan@mozilla.com> | 2015-12-22 18:11:21 +0100 |
---|---|---|
committer | Dylan Hardison <dylan@mozilla.com> | 2015-12-22 18:11:21 +0100 |
commit | eb1357fe03bb47cdd479cf533022e11dd6bd22e0 (patch) | |
tree | 493135e19d0e4fde16f4405e654d762020af7929 /Bugzilla/WebService/Util.pm | |
parent | 0cd77b4e6e8839782cec49596da33029860d3470 (diff) | |
download | bugzilla-eb1357fe03bb47cdd479cf533022e11dd6bd22e0.tar.gz bugzilla-eb1357fe03bb47cdd479cf533022e11dd6bd22e0.tar.xz |
Bug 1230932 - Providing a condition as an ID to the webservice results in a taint error
r=dkl,a=dkl
Diffstat (limited to 'Bugzilla/WebService/Util.pm')
-rw-r--r-- | Bugzilla/WebService/Util.pm | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Bugzilla/WebService/Util.pm b/Bugzilla/WebService/Util.pm index cbbc47921..503246c16 100644 --- a/Bugzilla/WebService/Util.pm +++ b/Bugzilla/WebService/Util.pm @@ -18,6 +18,7 @@ use Bugzilla::WebService::Constants; use Storable qw(dclone); use URI::Escape qw(uri_unescape); +use List::MoreUtils qw(all any); use parent qw(Exporter); @@ -221,7 +222,8 @@ sub validate { # sent any parameters at all, and we're getting @keys where # $params should be. return ($self, undef) if (defined $params and !ref $params); - + + my @id_params = qw( ids comment_ids ); # If @keys is not empty then we convert any named # parameters that have scalar values to arrayrefs # that match. @@ -230,6 +232,12 @@ sub validate { $params->{$key} = ref $params->{$key} ? $params->{$key} : [ $params->{$key} ]; + + if (any { $key eq $_ } @id_params) { + my $ids = $params->{$key}; + ThrowCodeError('param_integer_array_required', { param => $key }) + unless ref($ids) eq 'ARRAY' && all { /^[0-9]+$/ } @$ids; + } } } |