]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* include/grub/list.h (grub_list_remove): Don't crash if element is
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 29 Jan 2012 17:09:53 +0000 (18:09 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 29 Jan 2012 17:09:53 +0000 (18:09 +0100)
removed twice.

ChangeLog
include/grub/list.h

index e2677e46e294d4cb169bf4bdb4f08f3584508116..d58220b12c0c68e87811ed643338a6f61a6bac25 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * include/grub/list.h (grub_list_remove): Don't crash if element is
+       removed twice.
+
 2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Rename ofconsole to console.
index 6629b2c197c70c4a1cfa026a2490b2f50a0f2a88..54f528a054cc10b11b862c609789033bec096cbf 100644 (file)
@@ -44,9 +44,12 @@ grub_list_push (grub_list_t *head, grub_list_t item)
 static inline void
 grub_list_remove (grub_list_t item)
 {
-  *item->prev = item->next;
+  if (item->prev)
+    *item->prev = item->next;
   if (item->next)
     item->next->prev = item->prev;
+  item->next = 0;
+  item->prev = 0;
 }
 
 #define FOR_LIST_ELEMENTS(var, list) for ((var) = (list); (var); (var) = (var)->next)