Commit dfc2c713 by Patrick Steinhardt Committed by Carlos Martín Nieto

tree: validate filename and OID length when parsing object

When parsing tree entries from raw object data, we do not verify
that the tree entry actually has a filename as well as a valid
object ID. Fix this by asserting that the filename length is
non-zero as well as asserting that there are at least
`GIT_OID_RAWSZ` bytes left when parsing the OID.
parent 8e268168
......@@ -447,7 +447,12 @@ int git_tree__parse(void *_tree, git_odb_object *odb_obj)
if ((nul = memchr(buffer, 0, buffer_end - buffer)) == NULL)
return tree_error("Failed to parse tree. Object is corrupted", NULL);
filename_len = nul - buffer;
if ((filename_len = nul - buffer) == 0)
return tree_error("Failed to parse tree. Can't parse filename", NULL);
if ((buffer_end - (nul + 1)) < GIT_OID_RAWSZ)
return tree_error("Failed to parse tree. Can't parse OID", NULL);
/* Allocate the entry */
{
entry = git_array_alloc(tree->entries);
......
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