Commit d47c6aab by Carlos Martín Nieto

commit: don't include the LF in the header field value

When the encoding header changed to be treated as an additional
header, the EOL pointer started to point to the byte after the LF,
making the git__strndup call copy the LF into the value.

Increase the EOL pointer value after copying the data to keep the rest
of the semantics but avoid copying LF.
parent 7a2cf780
...@@ -174,8 +174,6 @@ int git_commit__parse_buffer(git_commit *commit, const void *data, size_t len) ...@@ -174,8 +174,6 @@ int git_commit__parse_buffer(git_commit *commit, const void *data, size_t len)
const char *eoln = buffer; const char *eoln = buffer;
while (eoln < buffer_end && *eoln != '\n') while (eoln < buffer_end && *eoln != '\n')
++eoln; ++eoln;
if (eoln < buffer_end && *eoln == '\n')
++eoln;
if (git__prefixcmp(buffer, "encoding ") == 0) { if (git__prefixcmp(buffer, "encoding ") == 0) {
buffer += strlen("encoding "); buffer += strlen("encoding ");
...@@ -184,6 +182,9 @@ int git_commit__parse_buffer(git_commit *commit, const void *data, size_t len) ...@@ -184,6 +182,9 @@ int git_commit__parse_buffer(git_commit *commit, const void *data, size_t len)
GITERR_CHECK_ALLOC(commit->message_encoding); GITERR_CHECK_ALLOC(commit->message_encoding);
} }
if (eoln < buffer_end && *eoln == '\n')
++eoln;
buffer = eoln; buffer = eoln;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment