On Sun, Jun 28, 2015 at 2:18 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > When fsck validates a commit or a tag object, it scans each line in > the header the object using helper functions such as "start_with()", s/header/& of/ > etc. that work on a NUL terminated buffer, but before a1e920a0 > (index-pack: terminate object buffers with NUL, 2014-12-08), the > validation functions were fed the object data as counted strings, > not necessarily terminated with a NUL. We added a helper function > require_end_of_header() to be called at the beginning of these > validation functions to insist that the object data contains an > empty line before its end. The theory is that the validating > functions will notice and stop when it hits an empty line as a > normal end of header (or a required header line that is missing) > before scanning past the end of potentially not NUL-terminated > buffer. > > But the theory forgot that in the older days, Git itself happily > created objects with only the header lines without a body. This > caused Git 2.2 and later to issue an unnecessary warning on some > existing repositories. > > With a1e920a0, we do not need to require an empty line (or the body) > in these objects to safely parse and validate them. Drop the > offending "must have an empty line" check from this helper function, > while keeping the other check to make sure that there is no NUL in > the header part of the object, and adjust the name of the helper to > what it does accordingly. > > Noticed-by: Wolfgang Denk <wd@xxxxxxx> > Helped-by: Jeff King <peff@xxxxxxxx> > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> -- 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