]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Check memory and next/prev pointers are still valid
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 11 Jul 2018 17:21:13 +0000 (13:21 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 11 Jul 2018 17:21:20 +0000 (13:21 -0400)
src/main/state.c

index c14fe2daabeab9578e5fb6d6bbb8761fda1bf9ec..3785584dba447424eaf777b243d433ac246a2202 100644 (file)
@@ -236,8 +236,12 @@ static void state_entry_unlink(fr_state_tree_t *state, fr_state_entry_t *entry)
 {
        fr_state_entry_t *prev, *next;
 
-       prev = entry->prev;
-       next = entry->next;
+       /*
+        *      Check the memory is still valid
+        */
+       (void) talloc_get_type_abort(entry, fr_state_entry_t);
+       prev = entry->prev ? talloc_get_type_abort(entry->prev, fr_state_entry_t) : NULL;
+       next = entry->next ? talloc_get_type_abort(entry->next, fr_state_entry_t) : NULL;
 
        if (prev) {
                rad_assert(state->head != entry);