parse_commit_buffer: tighten checks while parsing
authorMartin Koegler <mkoegler@auto.tuwien.ac.at>
Sat, 19 Jan 2008 17:35:23 +0000 (18:35 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 20 Jan 2008 19:00:57 +0000 (11:00 -0800)
commit0a61779994aa3de41d57bb85bd88a2f56c7ba7d8
tree64857f40715529f59d5a82fc6626d2dcba99dad6
parenta3b811a4914cf02bb25662e330a067c1b0ddbc75
parse_commit_buffer: tighten checks while parsing

This tightens the parsing of a commit object in a couple of ways.

 - The "tree " header must end with a LF (earlier we did not
   check this condition).

 - Make sure parsing of timestamp on the "committer " header
   does not go beyond the buffer, even when (1) the "author "
   header does not end with a LF (this means that the commit
   object is malformed and lacks the committer information) or
   (2) the "committer " header does not have ">" that is the end
   of the e-mail address, or (3) the "committer " header does
   not end with a LF.

We however still keep the existing behaviour to return a parsed
commit object even when non-structural headers such as committer
and author are malformed, so that tools that need to look at
commits to clean up a history with such broken commits can still
get at the structural data (i.e. the parents chain and the tree
object).

Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit.c