From ff6e777d28634661fb097c4fac9b27d810d8c599 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 30 Mar 2023 12:46:31 -0400 Subject: [PATCH] kernel/util: Clear list links on removal under KDEBUG. This way, if someone tries to double-remove an item or do other invalid things to it, this will crash instead of (silently) corrupting. --- headers/private/kernel/util/DoublyLinkedList.h | 4 ++++ src/system/kernel/util/list.cpp | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/headers/private/kernel/util/DoublyLinkedList.h b/headers/private/kernel/util/DoublyLinkedList.h index ce6845e3e2..25e6ee6427 100644 --- a/headers/private/kernel/util/DoublyLinkedList.h +++ b/headers/private/kernel/util/DoublyLinkedList.h @@ -528,6 +528,10 @@ DOUBLY_LINKED_LIST_CLASS_NAME::Remove(Element* element) sGetLink(elLink->next)->previous = elLink->previous; else fLast = elLink->previous; + +#if DEBUG_DOUBLY_LINKED_LIST + elLink->next = elLink->previous = NULL; +#endif } } diff --git a/src/system/kernel/util/list.cpp b/src/system/kernel/util/list.cpp index 39a30b02eb..719772a95b 100644 --- a/src/system/kernel/util/list.cpp +++ b/src/system/kernel/util/list.cpp @@ -76,9 +76,13 @@ void list_remove_link(void *_link) { list_link *link = (list_link *)_link; - + link->next->prev = link->prev; link->prev->next = link->next; + +#if DEBUG_DOUBLY_LINKED_LIST + link->prev = link->next = NULL; +#endif }