summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author <Koosha>2012-08-31 22:41:55 +0200
committerDave Lawrence <dlawrence@mozilla.com>2012-08-31 22:41:55 +0200
commit30987a363fbcb5a3c3a15a69b4a0e3cdac956da8 (patch)
tree03d5368f039050677c5bb312dbe50da79539e3e9
parent72661fd501f4e9e4552145ab3d9616d0d61fb51b (diff)
downloadbugzilla-30987a363fbcb5a3c3a15a69b4a0e3cdac956da8.tar.gz
bugzilla-30987a363fbcb5a3c3a15a69b4a0e3cdac956da8.tar.xz
Bug 783222 - Make set_all() throw error on invalid param names
r/a=LpSolit
-rw-r--r--Bugzilla/Object.pm5
1 files changed, 5 insertions, 0 deletions
diff --git a/Bugzilla/Object.pm b/Bugzilla/Object.pm
index c606540fa..531b81711 100644
--- a/Bugzilla/Object.pm
+++ b/Bugzilla/Object.pm
@@ -321,12 +321,17 @@ sub set_all {
my %field_values = %$params;
my @sorted_names = $self->_sort_by_dep(keys %field_values);
+
foreach my $key (@sorted_names) {
# It's possible for one set_ method to delete a key from $params
# for another set method, so if that's happened, we don't call the
# other set method.
next if !exists $field_values{$key};
my $method = "set_$key";
+ if (!$self->can($method)) {
+ my $class = ref($self) || $self;
+ ThrowCodeError("unknown_method", { method => "${class}::${method}" });
+ }
$self->$method($field_values{$key}, \%field_values);
}
Bugzilla::Hook::process('object_end_of_set_all',