summaryrefslogtreecommitdiff
path: root/src/signature.c
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-01-21 13:19:41 -0800
committerRussell Belfer <rb@github.com>2013-01-21 13:19:41 -0800
commit965e4e2d3182eb179e928191abfd446c0b652867 (patch)
tree179cc82ce56e41065718c00ce99ed27b38ddb50c /src/signature.c
parentd47c6aabfe8301577a6e4067aacd9ed6782e4035 (diff)
downloadlibgit2-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.c4
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;