diff options
Diffstat (limited to 'hicn-light/src/hicn/core/fib.c')
-rw-r--r-- | hicn-light/src/hicn/core/fib.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/hicn-light/src/hicn/core/fib.c b/hicn-light/src/hicn/core/fib.c index 2e8492457..70c5599fb 100644 --- a/hicn-light/src/hicn/core/fib.c +++ b/hicn-light/src/hicn/core/fib.c @@ -381,6 +381,8 @@ fib_entry_t *fib_contains(const fib_t *fib, const hicn_prefix_t *prefix) { if (!curr) return NULL; if (search.match_len != prefix_len) return NULL; + if (prefix_len != search.prefix_len) return NULL; + return curr->is_used ? curr->entry : NULL; } @@ -488,7 +490,7 @@ static void fib_node_remove(fib_t *fib, const hicn_prefix_t *prefix) { case 0: _fib_remove(fib, curr, search.parent); - if (!search.parent->is_used) + if (search.parent && !search.parent->is_used) _fib_remove(fib, search.parent, search.gparent); break; } |