From: mkanat%kerio.com <> Date: Fri, 25 Feb 2005 11:28:01 +0000 (+0000) Subject: Bug 282748: uninitialized value in localtime in Format.pm X-Git-Tag: bugzilla-2.19.3~249 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1414db6ba6c7508bf6e0e4c1191218aa71d7ce43;p=thirdparty%2Fbugzilla.git Bug 282748: uninitialized value in localtime in Format.pm Patch By Frederic Buclin r=wurblzap, a=myk --- diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index df734ef6f4..b4b0c9dfe2 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -201,7 +201,9 @@ sub ProcessOneBug($) { } $values{'estimated_time'} = format_time_decimal($values{'estimated_time'}); - $values{'deadline'} = time2str("%Y-%m-%d", str2time($values{'deadline'})); + if ($values{'deadline'}) { + $values{'deadline'} = time2str("%Y-%m-%d", str2time($values{'deadline'})); + } my @dependslist; SendSQL("SELECT dependson FROM dependencies WHERE @@ -262,10 +264,6 @@ sub ProcessOneBug($) { WHERE attach_id = $attachid"); $diffpart->{'isprivate'} = FetchOneColumn(); } - if( $fieldname eq 'deadline' ) { - $old = time2str("%Y-%m-%d", str2time($old)); - $new = time2str("%Y-%m-%d", str2time($new)); - } $difftext = FormatTriple($what, $old, $new); $diffpart->{'header'} = $diffheader; $diffpart->{'fieldname'} = $fieldname; diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index 3bc39ff09d..7481c18c3b 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -277,14 +277,17 @@ sub file_mod_time ($) { sub ValidateDate { my ($date, $format) = @_; + my $date2; - my $ts = str2time($date); - my $date2 = time2str("%Y-%m-%d", $ts); + # $ts is undefined if the parser fails. + my $ts = str2time($date); + if ($ts) { + $date2 = time2str("%Y-%m-%d", $ts); - $date =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/; - $date2 =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/; - - if ($date ne $date2) { + $date =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/; + $date2 =~ s/(\d+)-0*(\d+?)-0*(\d+?)/$1-$2-$3/; + } + if (!$ts || $date ne $date2) { ThrowUserError('illegal_date', {date => $date, format => $format}); } } diff --git a/CGI.pl b/CGI.pl index 1b556bc71b..ff2db2febb 100644 --- a/CGI.pl +++ b/CGI.pl @@ -396,11 +396,6 @@ sub GetBugActivity { $changes = []; } - if ($fieldname eq 'deadline') { - $removed = time2str("%Y-%m-%d", str2time($removed)); - $added = time2str("%Y-%m-%d", str2time($added)); - } - $operation->{'who'} = $who; $operation->{'when'} = $when; diff --git a/process_bug.cgi b/process_bug.cgi index c1f3c33bb9..3eccfa3707 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -1767,7 +1767,17 @@ foreach my $id (@idlist) { { $check_dep_bugs = 1; } - + + # Convert deadlines to the YYYY-MM-DD format. We use an + # intermediate $xxxtime to prevent errors in the web + # server log file when str2time($xxx) is undefined. + if ($col eq 'deadline') { + my $oldtime = str2time($old); + $old = ($oldtime) ? time2str("%Y-%m-%d", $oldtime) : ''; + my $newtime = str2time($new); + $new = ($newtime) ? time2str("%Y-%m-%d", $newtime) : ''; + } + LogActivityEntry($id,$col,$old,$new,$whoid,$timestamp); $bug_changed = 1; }