[tor-commits] [arm/release] Prevent crash on startup when reading Feb 29th in logs

atagar at torproject.org atagar at torproject.org
Sun Apr 29 04:00:59 UTC 2012

commit a570d9f726473b47d48be4f912a8fa0c7bfd639f
Author: Sebastian Hahn <sebastian at torproject.org>
Date:   Wed Feb 29 03:01:21 2012 +0100

    Prevent crash on startup when reading Feb 29th in logs
    During prepopulation of log entries, arm tries to parse the date that
    Tor gives it. Unfortunately Python is a little (read: very) silly and
    refuses to accept that February 29th can be a valid day when information
    about the year is missing. As a solution, we just pretend it is the year
    2012 forever when parsing dates from logs (Tor doesn't add the year to
    its date information).
    Fixes bug 5265, first reported by an anonymous user from IRC.
 src/cli/logPanel.py |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/cli/logPanel.py b/src/cli/logPanel.py
index 179db9f..496fe86 100644
--- a/src/cli/logPanel.py
+++ b/src/cli/logPanel.py
@@ -302,8 +302,12 @@ def getLogFileEntries(runlevels, readLimit = None, addLimit = None, config = Non
       # overwrites missing time parameters with the local time (ignoring wday
       # and yday since they aren't used)
-      eventTimeComp = list(time.strptime(timestamp, "%b %d %H:%M:%S"))
-      eventTimeComp[0] = currentLocalTime.tm_year
+      # Pretend the year is 2012, because 2012 is a leap year, and parsing a
+      # date with strptime fails if Feb 29th is passed without a year that's
+      # actually a leap year. We can't just use the current year, because we
+      # might be parsing old logs which didn't get rotated.
+      timestamp = "2012 " + timestamp
+      eventTimeComp = list(time.strptime(timestamp, "%Y %b %d %H:%M:%S"))
       eventTimeComp[8] = currentLocalTime.tm_isdst
       eventTime = time.mktime(eventTimeComp) # converts local to unix time

More information about the tor-commits mailing list