mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-07 18:11:43 +00:00
Merge pull request #1265 from arrbee/parse-commit-time-as-uint64
Parse commit time as uint64_t to avoid overflow
This commit is contained in:
commit
1bf7bee3bc
@ -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)
|
static int parse_time(git_time_t *time_out, const char *buffer)
|
||||||
{
|
{
|
||||||
int time;
|
|
||||||
int error;
|
int error;
|
||||||
|
int64_t time;
|
||||||
|
|
||||||
if (*buffer == '+' || *buffer == '-') {
|
if (*buffer == '+' || *buffer == '-') {
|
||||||
giterr_set(GITERR_INVALID, "Failed while parsing time. '%s' actually looks like a timezone offset.", buffer);
|
giterr_set(GITERR_INVALID, "Failed while parsing time. '%s' actually looks like a timezone offset.", buffer);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = git__strtol32(&time, buffer, &buffer, 10);
|
error = git__strtol64(&time, buffer, &buffer, 10);
|
||||||
|
|
||||||
if (!error)
|
if (!error)
|
||||||
*time_out = (git_time_t)time;
|
*time_out = (git_time_t)time;
|
||||||
|
@ -121,6 +121,14 @@ passing_signature_test_case passing_signature_cases[] = {
|
|||||||
{"author A U Thor <author@example.com> and others 1234567890 -0700\n", "author ", "A U Thor", "author@example.com", 1234567890, -420},
|
{"author A U Thor <author@example.com> and others 1234567890 -0700\n", "author ", "A U Thor", "author@example.com", 1234567890, -420},
|
||||||
{"author A U Thor <author@example.com> and others 1234567890\n", "author ", "A U Thor", "author@example.com", 1234567890, 0},
|
{"author A U Thor <author@example.com> and others 1234567890\n", "author ", "A U Thor", "author@example.com", 1234567890, 0},
|
||||||
{"author A U Thor> <author@example.com> and others 1234567890\n", "author ", "A U Thor>", "author@example.com", 1234567890, 0},
|
{"author A U Thor> <author@example.com> and others 1234567890\n", "author ", "A U Thor>", "author@example.com", 1234567890, 0},
|
||||||
|
/* a variety of dates */
|
||||||
|
{"author Vicent Marti <tanoku@gmail.com> 0 \n", "author ", "Vicent Marti", "tanoku@gmail.com", 0, 0},
|
||||||
|
{"author Vicent Marti <tanoku@gmail.com> 1234567890 \n", "author ", "Vicent Marti", "tanoku@gmail.com", 1234567890, 0},
|
||||||
|
{"author Vicent Marti <tanoku@gmail.com> 2147483647 \n", "author ", "Vicent Marti", "tanoku@gmail.com", 0x7fffffff, 0},
|
||||||
|
{"author Vicent Marti <tanoku@gmail.com> 4294967295 \n", "author ", "Vicent Marti", "tanoku@gmail.com", 0xffffffff, 0},
|
||||||
|
{"author Vicent Marti <tanoku@gmail.com> 4294967296 \n", "author ", "Vicent Marti", "tanoku@gmail.com", 4294967296, 0},
|
||||||
|
{"author Vicent Marti <tanoku@gmail.com> 8589934592 \n", "author ", "Vicent Marti", "tanoku@gmail.com", 8589934592, 0},
|
||||||
|
|
||||||
{NULL,NULL,NULL,NULL,0,0}
|
{NULL,NULL,NULL,NULL,0,0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user