mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-05 22:21:35 +00:00
index: correctly parse invalidated TREE extensions
A TREE extension with an entry count of -1 means that it was invalidated and we should ignore it. Do so instead of returning an error. This fixes issue #202 Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
This commit is contained in:
parent
cdd9fd473e
commit
a02fc2cd16
11
src/index.c
11
src/index.c
@ -520,11 +520,20 @@ static int read_tree_internal(git_index_tree **out,
|
||||
|
||||
/* Blank-terminated ASCII decimal number of entries in this tree */
|
||||
if (git__strtol32(&count, buffer, &buffer, 10) < GIT_SUCCESS ||
|
||||
count < 0) {
|
||||
count < -1) {
|
||||
error = GIT_EOBJCORRUPTED;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Invalidated TREE. Free the tree but report success */
|
||||
if (count == -1) {
|
||||
buffer = buffer_end;
|
||||
free_tree(tree); /* Needs to be done manually */
|
||||
tree = NULL;
|
||||
error = GIT_SUCCESS;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
tree->entries = (size_t)count;
|
||||
|
||||
if (*buffer != ' ' || ++buffer >= buffer_end) {
|
||||
|
Loading…
Reference in New Issue
Block a user