Skip to content
  • Jeff King's avatar
    parse_date: fix signedness in timezone calculation · 9ba0f033
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    When no timezone is specified, we deduce the offset by
    subtracting the result of mktime from our calculated
    timestamp.
    
    However, our timestamp is stored as an unsigned integer,
    meaning we perform the subtraction as unsigned. For a
    negative offset, this means we wrap to a very high number,
    and our numeric timezone is in the millions of hours. You
    can see this bug by doing:
    
       $ TZ=EST \
         GIT_AUTHOR_DATE='2010-06-01 10:00' \
         git commit -a -m foo
       $ git cat-file -p HEAD | grep author
       author Jeff King <peff@peff.net> 1275404416 +119304128
    
    Instead, we should perform this subtraction as a time_t, the
    same type that mktime returns.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    9ba0f033