diff options
author | Pavel Tvrdik <pawel.tvrdik@gmail.com> | 2016-10-01 12:50:29 +0200 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2016-10-11 21:25:21 +0200 |
commit | c2564d34af9e01a828c24b0be7f269e5b036b5da (patch) | |
tree | 5f6b258a0cdad47c6b0b2649224ed516ddba0035 | |
parent | 7935b9d21228dcd1eb95ebcb056b2a815e3e854b (diff) |
Tree/Trie: Check the end of buffer
We set buffer->pos to buffer->end in function buffer_print() when
bvsnprintf() failed, so there would be uninitialized memory between
the old buffer->pos and the current buffer->pos.
-rw-r--r-- | filter/tree.c | 3 | ||||
-rw-r--r-- | filter/trie.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/filter/tree.c b/filter/tree.c index 328c7184..1196e630 100644 --- a/filter/tree.c +++ b/filter/tree.c @@ -165,6 +165,9 @@ tree_format(struct f_tree *t, buffer *buf) tree_node_format(t, buf); + if (buf->pos == buf->end) + return; + /* Undo last separator */ if (buf->pos[-1] != '[') buf->pos -= 2; diff --git a/filter/trie.c b/filter/trie.c index fba395d1..565ae82f 100644 --- a/filter/trie.c +++ b/filter/trie.c @@ -300,6 +300,9 @@ trie_format(struct f_trie *t, buffer *buf) buffer_print(buf, "%I/%d, ", IPA_NONE, 0); trie_node_format(t->root, buf); + if (buf->pos == buf->end) + return; + /* Undo last separator */ if (buf->pos[-1] != '[') buf->pos -= 2; |