summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/commit.c9
-rw-r--r--src/revwalk.c4
2 files changed, 10 insertions, 3 deletions
diff --git a/src/commit.c b/src/commit.c
index 2e3e1ba4b..53d25eef4 100644
--- a/src/commit.c
+++ b/src/commit.c
@@ -132,12 +132,19 @@ int git_commit__parse_time(time_t *commit_time, char *buffer, const char *buffer
if (memcmp(buffer, "committer ", 10) != 0)
return -1;
- buffer = memchr(buffer, '\n', buffer_end - buffer);
+ buffer = memchr(buffer, '>', buffer_end - buffer);
if (buffer == 0 || ++buffer >= buffer_end)
return -1;
*commit_time = strtol(buffer, &buffer, 10);
+ if (*commit_time == 0)
+ return -1;
+
+ buffer = memchr(buffer, '\n', buffer_end - buffer);
+ if (buffer == 0 || ++buffer >= buffer_end)
+ return -1;
+
return (buffer < buffer_end) ? 0 : -1;
}
diff --git a/src/revwalk.c b/src/revwalk.c
index eccaf6f8e..977c17933 100644
--- a/src/revwalk.c
+++ b/src/revwalk.c
@@ -64,10 +64,10 @@ void gitrp_sorting(git_revpool *pool, unsigned int sort_mode)
void gitrp_push(git_revpool *pool, git_commit *commit)
{
- if (commit->object.pool != pool || pool->walking)
+ if (commit == NULL || commit->seen)
return;
- if (commit->seen)
+ if (commit->object.pool != pool || pool->walking)
return;
if (!commit->parsed)