summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Štetiar2019-11-20 08:31:08 +0000
committerPetr Štetiar2019-11-24 12:26:58 +0000
commit9b6ede0e5312071400e6b009c6b92413061bbfaa (patch)
tree0eb55dc93de5f81a5f7984562466d1a1ea3738b5
parentc008294a8323c8cd45decde6a97aa85df2443dac (diff)
downloadlibubox-9b6ede0e5312071400e6b009c6b92413061bbfaa.tar.gz
avl: guard against theoretical null pointer dereference
clang-10 analyzer reports following: avl.c:671:25: warning: Access to field 'parent' results in a dereference of a null pointer (loaded from field 'right') node->right->parent = parent; ~~~~~ ^ Which seems to be impossible to trigger via exported AVL public API, but it could be probably trigerred by fiddling with the AVL tree node struct members manually as they are exposed. Signed-off-by: Petr Štetiar <ynezz@true.cz>
-rw-r--r--avl.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/avl.c b/avl.c
index 8d0bf65..79ea5c7 100644
--- a/avl.c
+++ b/avl.c
@@ -45,6 +45,7 @@
#include <string.h>
#include "avl.h"
+#include "assert.h"
#include "list.h"
/**
@@ -668,6 +669,7 @@ avl_delete_worker(struct avl_tree *tree, struct avl_node *node)
return;
}
+ assert(node->right);
node->right->parent = parent;
if (parent->left == node)