From ea7030a701bfdb503df542c3d7e814b8ea702929 Mon Sep 17 00:00:00 2001 From: "travis%sedsystems.ca" <> Date: Thu, 17 Feb 2005 00:16:35 +0000 Subject: Bug 271276 : Cannot enter negative time for 'Hours Worked' Patch by Shane H. W. Travis r=LpSolit a=justdave --- Bugzilla/Bug.pm | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'Bugzilla/Bug.pm') diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index e231f93b0..4168cac19 100755 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -501,10 +501,29 @@ sub EmitDependList { } sub ValidateTime { - my ($time, $field) = @_; - if ($time > 99999.99 || $time < 0 || !($time =~ /^(?:\d+(?:\.\d*)?|\.\d+)$/)) { - ThrowUserError("need_positive_number", {field => "$field"}, "abort"); - } + my ($time, $field) = @_; + + # regexp verifies one or more digits, optionally followed by a period and + # zero or more digits, OR we have a period followed by one or more digits + # (allow negatives, though, so people can back out errors in time reporting) + if ($time !~ /^-?(?:\d+(?:\.\d*)?|\.\d+)$/) { + ThrowUserError("number_not_numeric", + {field => "$field", num => "$time"}, + "abort"); + } + + # Only the "work_time" field is allowed to contain a negative value. + if ( ($time < 0) && ($field ne "work_time") ) { + ThrowUserError("number_too_small", + {field => "$field", num => "$time", min_num => "0"}, + "abort"); + } + + if ($time > 99999.99) { + ThrowUserError("number_too_large", + {field => "$field", num => "$time", max_num => "99999.99"}, + "abort"); + } } sub GetComments { -- cgit v1.2.3-24-g4f1b