Check if a line of the header has enough characters to possibly contain the requested prefix. Signed-off-by: Alex Riesen <raa.lkml@xxxxxxxxx> --- Noticed by debugging git-log crash in broken repos with missing packs. It happened to be up in backtrace. At the moment the optimization is actually a slow down: no line in the header is shorter than the only key this function is ever asked for: encoding. But, in case the function ever gets asked for something longer, the old condition is just wrong: it does not take into account the amount of data in the line when comparing with key. commit.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/commit.c b/commit.c index aa7059c..d01833d 100644 --- a/commit.c +++ b/commit.c @@ -638,7 +638,9 @@ static char *get_header(const struct commit *commit, const char *key) next = NULL; } else next = eol + 1; - if (!strncmp(line, key, key_len) && line[key_len] == ' ') { + if (eol - line > key_len && + !strncmp(line, key, key_len) && + line[key_len] == ' ') { int len = eol - line - key_len; char *ret = xmalloc(len); memcpy(ret, line + key_len + 1, len - 1); -- 1.5.2.rc1.21.g80e79 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html