Bug 279303: Negative numbers are rejected as invalid sortkeys for milestones - Patch by Peter D. Stout <pds@edgedynamics.com> r=LpSolit a=justdave

git-svn-id: svn://10.0.0.236/trunk@173006 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
lpsolit%gmail.com
2005-05-03 19:44:59 +00:00
parent 49b97006a5
commit ed2d1d2aa6
4 changed files with 40 additions and 18 deletions

View File

@@ -116,6 +116,21 @@ sub CheckMilestone ($$)
}
}
sub CheckSortkey ($$)
{
my ($milestone, $sortkey) = @_;
# Keep a copy in case detaint_signed() clears the sortkey
my $stored_sortkey = $sortkey;
if (!detaint_signed($sortkey) || $sortkey < -32768 || $sortkey > 32767) {
ThrowUserError('milestone_sortkey_invalid',
{'name' => $milestone,
'sortkey' => $stored_sortkey});
}
return $sortkey;
}
#
# Preliminary checks:
#
@@ -261,13 +276,8 @@ if ($action eq 'new') {
{'name' => $milestone});
}
# Need to store in case detaint_natural() clears the sortkey
my $stored_sortkey = $sortkey;
if (!detaint_natural($sortkey)) {
ThrowUserError('milestone_sortkey_invalid',
{'name' => $milestone,
'sortkey' => $stored_sortkey});
}
$sortkey = CheckSortkey($milestone, $sortkey);
if (TestMilestone($product, $milestone)) {
ThrowUserError('milestone_already_exists',
{'name' => $milestone,
@@ -453,15 +463,8 @@ if ($action eq 'update') {
'milestones WRITE',
'products WRITE');
# Need to store because detaint_natural() will delete this if
# invalid
my $stored_sortkey = $sortkey;
if ($sortkey != $sortkeyold) {
if (!detaint_natural($sortkey)) {
ThrowUserError('milestone_sortkey_invalid',
{'name' => $milestone,
'sortkey' => $stored_sortkey});
}
if ($sortkey ne $sortkeyold) {
$sortkey = CheckSortkey($milestone, $sortkey);
trick_taint($milestoneold);