diff options
author | lpsolit%gmail.com <> | 2009-07-07 13:08:19 +0200 |
---|---|---|
committer | lpsolit%gmail.com <> | 2009-07-07 13:08:19 +0200 |
commit | 23ac1fef4768e1d162e8a99cf599684e4cecdc1f (patch) | |
tree | 2871d01974b63177ec6216b53990d1a3f9be2252 | |
parent | 03d2790c4849657d9fcff7b5fdc0b78dfc0dd382 (diff) | |
download | bugzilla-23ac1fef4768e1d162e8a99cf599684e4cecdc1f.tar.gz bugzilla-23ac1fef4768e1d162e8a99cf599684e4cecdc1f.tar.xz |
Bug 502682: CheckIfVotedConfirmed fails to confirm a bug if you don't have the permissions to set status/everconfirmed - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=mkanat
-rw-r--r-- | Bugzilla/Bug.pm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index a2db3572a..dbb88be6a 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -3373,11 +3373,17 @@ sub CheckIfVotedConfirmed { } ThrowCodeError('no_open_bug_status') unless $new_status; - $bug->set_status($new_status); + # We cannot call $bug->set_status() here, because a user without + # canconfirm privs should still be able to confirm a bug by + # popular vote. We already know the new status is valid, so it's safe. + $bug->{bug_status} = $new_status; + $bug->{everconfirmed} = 1; + delete $bug->{'status'}; # Contains the status object. } else { # If the bug is in a closed state, only set everconfirmed to 1. - $bug->_set_everconfirmed(1); + # Do not call $bug->_set_everconfirmed(), for the same reason as above. + $bug->{everconfirmed} = 1; } $bug->update(); |