Bug 449931: [SECURITY] Unprivileged users can approve/unapprove all the quips (including bypassing moderation) - Patch by Robin H. Johnson <robbat2@gentoo.org> r/a=LpSolit
git-svn-id: svn://10.0.0.236/trunk@254881 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -88,6 +88,11 @@ if ($action eq "add") {
|
||||
}
|
||||
|
||||
if ($action eq 'approve') {
|
||||
$user->in_group('admin')
|
||||
|| ThrowUserError("auth_failure", {group => "admin",
|
||||
action => "approve",
|
||||
object => "quips"});
|
||||
|
||||
# Read in the entire quip list
|
||||
my $quipsref = $dbh->selectall_arrayref("SELECT quipid, approved FROM quips");
|
||||
|
||||
@@ -100,11 +105,18 @@ if ($action eq 'approve') {
|
||||
my @approved;
|
||||
my @unapproved;
|
||||
foreach my $quipid (keys %quips) {
|
||||
my $form = $cgi->param('quipid_'.$quipid) ? 1 : 0;
|
||||
if($quips{$quipid} ne $form) {
|
||||
if($form) { push(@approved, $quipid); }
|
||||
else { push(@unapproved, $quipid); }
|
||||
}
|
||||
# Must check for each quipid being defined for concurrency and
|
||||
# automated usage where only one quipid might be defined.
|
||||
my $quip = $cgi->param("quipid_$quipid") ? 1 : 0;
|
||||
if(defined($cgi->param("defined_quipid_$quipid"))) {
|
||||
if($quips{$quipid} != $quip) {
|
||||
if($quip) {
|
||||
push(@approved, $quipid);
|
||||
} else {
|
||||
push(@unapproved, $quipid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$dbh->do("UPDATE quips SET approved = 1 WHERE quipid IN (" .
|
||||
join(",", @approved) . ")") if($#approved > -1);
|
||||
|
||||
@@ -146,6 +146,8 @@
|
||||
schedule
|
||||
[% ELSIF action == "use" %]
|
||||
use
|
||||
[% ELSIF action == "approve" %]
|
||||
approve
|
||||
[% END %]
|
||||
|
||||
[% IF object == "administrative_pages" %]
|
||||
|
||||
@@ -124,6 +124,9 @@
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<input type="hidden" name="defined_quipid_[% quipid FILTER html %]"
|
||||
id="defined_quipid_[% quipid FILTER html %]"
|
||||
value="1">
|
||||
<input type="checkbox" name="quipid_[% quipid FILTER html %]"
|
||||
id="quipid_[% quipid FILTER html %]"
|
||||
[%- ' checked="checked"' IF quips.$quipid.approved %]>
|
||||
|
||||
Reference in New Issue
Block a user