summaryrefslogtreecommitdiff
path: root/src/oid.c
diff options
context:
space:
mode:
authorAxel Wagner <mail@merovius.de>2013-05-22 02:04:12 +0200
committerAxel Wagner <mail@merovius.de>2013-05-22 02:04:12 +0200
commit52f537e9c540fe5492ee6008153ab4db50c4091e (patch)
tree46501b94385504f5a0657ea9c4992df16f60cd51 /src/oid.c
parent6828bf26e9e370af57d7724fe1dac9a24ac552a8 (diff)
downloadlibgit2-52f537e9c540fe5492ee6008153ab4db50c4091e.tar.gz
Bugfix: Return NULL in push_leaf, when trie is full
os->full was set 1, but the overflowed idx_leaf was still used to index into os->nodes a little later. Returning NULL fixes that.
Diffstat (limited to 'src/oid.c')
-rw-r--r--src/oid.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/oid.c b/src/oid.c
index e74640c57..0b023ddd0 100644
--- a/src/oid.c
+++ b/src/oid.c
@@ -269,8 +269,10 @@ static trie_node *push_leaf(git_oid_shorten *os, node_index idx, int push_at, co
idx_leaf = (node_index)os->node_count++;
- if (os->node_count == SHRT_MAX)
+ if (os->node_count == SHRT_MAX) {
os->full = 1;
+ return NULL;
+ }
node = &os->nodes[idx];
node->children[push_at] = -idx_leaf;