Skip to content

Commit

Permalink
fast-import.c::validate_raw_date(): really validate the value
Browse files Browse the repository at this point in the history
When reading the "raw format" timestamp from the input stream, make sure
that the timezone offset is a reasonable value by imitating 7122f82
(date.c: improve guess between timezone offset and year., 2006-06-08).

We _might_ want to also check if the timestamp itself is reasonable, but
that is left for a separate commit.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Oct 7, 2009
1 parent 04ce83e commit 1cd749c
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions fast-import.c
Original file line number Diff line number Diff line change
Expand Up @@ -1744,19 +1744,22 @@ static int validate_raw_date(const char *src, char *result, int maxlen)
{
const char *orig_src = src;
char *endp;
unsigned long num;

errno = 0;

strtoul(src, &endp, 10);
num = strtoul(src, &endp, 10);
/* NEEDSWORK: perhaps check for reasonable values? */
if (errno || endp == src || *endp != ' ')
return -1;

src = endp + 1;
if (*src != '-' && *src != '+')
return -1;

strtoul(src + 1, &endp, 10);
if (errno || endp == src || *endp || (endp - orig_src) >= maxlen)
num = strtoul(src + 1, &endp, 10);
if (errno || endp == src + 1 || *endp || (endp - orig_src) >= maxlen ||
1400 < num)
return -1;

strcpy(result, orig_src);
Expand Down

0 comments on commit 1cd749c

Please sign in to comment.