diff options
author | Russell Belfer <rb@github.com> | 2013-01-21 13:19:41 -0800 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2013-01-21 13:19:41 -0800 |
commit | 965e4e2d3182eb179e928191abfd446c0b652867 (patch) | |
tree | 179cc82ce56e41065718c00ce99ed27b38ddb50c /src/signature.c | |
parent | d47c6aabfe8301577a6e4067aacd9ed6782e4035 (diff) | |
download | libgit2-965e4e2d3182eb179e928191abfd446c0b652867.tar.gz |
Parse commit time as uint64_t to avoid overflow
The commit time is already stored as a git_time_t, but we were
parsing is as a uint32_t. This just switches the parser to use
uint64_t which will handle dates further in the future (and adds
some tests of those future dates).
Diffstat (limited to 'src/signature.c')
-rw-r--r-- | src/signature.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/signature.c b/src/signature.c index d77655315..3380097ff 100644 --- a/src/signature.c +++ b/src/signature.c @@ -241,15 +241,15 @@ static const char *scan_for_previous_token(const char *buffer, const char *left_ static int parse_time(git_time_t *time_out, const char *buffer) { - int time; int error; + int64_t time; if (*buffer == '+' || *buffer == '-') { giterr_set(GITERR_INVALID, "Failed while parsing time. '%s' actually looks like a timezone offset.", buffer); return -1; } - error = git__strtol32(&time, buffer, &buffer, 10); + error = git__strtol64(&time, buffer, &buffer, 10); if (!error) *time_out = (git_time_t)time; |