summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Search.pm
diff options
context:
space:
mode:
authorDave Lawrence <dlawrence@mozilla.com>2012-10-09 21:01:58 +0200
committerDave Lawrence <dlawrence@mozilla.com>2012-10-09 21:01:58 +0200
commitb0f9f0819ceaeefa2ed2b4ba028d851d1de6146b (patch)
tree42c25087002db6cbec187a8f8d6ad111589107df /Bugzilla/Search.pm
parentfca7f7eda42cecf08252d710a16c4ad001ba204b (diff)
parentf9e41025a332f57b3d9cabed8418e208fbd90400 (diff)
downloadbugzilla-b0f9f0819ceaeefa2ed2b4ba028d851d1de6146b.tar.gz
bugzilla-b0f9f0819ceaeefa2ed2b4ba028d851d1de6146b.tar.xz
merged with bugzilla/4.2
Diffstat (limited to 'Bugzilla/Search.pm')
-rw-r--r--Bugzilla/Search.pm16
1 files changed, 11 insertions, 5 deletions
diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm
index a4db2e05d..c7c5038be 100644
--- a/Bugzilla/Search.pm
+++ b/Bugzilla/Search.pm
@@ -2050,8 +2050,8 @@ sub _contact_pronoun {
my ($self, $args) = @_;
my $value = $args->{value};
my $user = $self->_user;
-
- if ($value =~ /^\%group/) {
+
+ if ($value =~ /^\%group\.[^%]+%$/) {
$self->_contact_exact_group($args);
}
elsif ($value =~ /^(%\w+%)$/) {
@@ -2068,11 +2068,17 @@ sub _contact_exact_group {
my $dbh = Bugzilla->dbh;
my $user = $self->_user;
+ # We already know $value will match this regexp, else we wouldn't be here.
$value =~ /\%group\.([^%]+)%/;
- my $group = Bugzilla::Group->check({ name => $1, _error => 'invalid_group_name' });
- $group->check_members_are_visible();
+ my $group_name = $1;
+ my $group = Bugzilla::Group->check({ name => $group_name, _error => 'invalid_group_name' });
+ # Pass $group_name instead of $group->name to the error message
+ # to not leak the existence of the group.
$user->in_group($group)
- || ThrowUserError('invalid_group_name', {name => $group->name});
+ || ThrowUserError('invalid_group_name', { name => $group_name });
+ # Now that we know the user belongs to this group, it's safe
+ # to disclose more information.
+ $group->check_members_are_visible();
my $group_ids = Bugzilla::Group->flatten_group_membership($group->id);
my $table = "user_group_map_$chart_id";