]> granicus.if.org Git - sudo/commitdiff
In rbrepair(), make sure we never try to change the color of the
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 1 Jan 2013 18:31:40 +0000 (13:31 -0500)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 1 Jan 2013 18:31:40 +0000 (13:31 -0500)
sentinel node, which is the first entry, not the root.
From Michael King

doc/CONTRIBUTORS
plugins/sudoers/redblack.c

index fe5db7cfab28534e730fa869943286a9afd818f3..147ce07e8fbf49ba0d909d9fd36e2f52698b49bb 100644 (file)
@@ -72,6 +72,7 @@ you believe you should be listed, please send a note to sudo@sudo.ws.
     Stepan Kasal
     Mike Kienenberger
     Dale King
+    Michael King
     Jim Knoble
     Tim Knox
     Alek O. Komarnitsky
@@ -117,7 +118,7 @@ you believe you should be listed, please send a note to sudo@sudo.ws.
     Diego Elio Petteno
     Joel Pickett
     Alex Plotnick
-    Tran Ngoc Quan 
+    Tran Ngoc Quan
     Gudleik Rasch
     Matt Richards
     Guido van Rossum
index 3cbda4c215fc737682a886f7eba38529eaeb383a..97e63e61152813673b075de9b1b70033fdef76ec 100644 (file)
@@ -412,7 +412,7 @@ rbrepair(struct rbtree *tree, struct rbnode *node)
     struct rbnode *sibling;
     debug_decl(rbrepair, SUDO_DEBUG_RBTREE)
 
-    while (node->color == black && node != rbroot(tree)) {
+    while (node->color == black && node != rbfirst(tree)) {
        if (node == node->parent->left) {
            sibling = node->parent->right;
            if (sibling->color == red) {
@@ -435,7 +435,7 @@ rbrepair(struct rbtree *tree, struct rbnode *node)
                node->parent->color = black;
                sibling->right->color = black;
                rotate_left(tree, node->parent);
-               node = rbroot(tree); /* exit loop */
+               node = rbfirst(tree); /* exit loop */
            }
        } else { /* if (node == node->parent->right) */
            sibling = node->parent->left;
@@ -459,7 +459,7 @@ rbrepair(struct rbtree *tree, struct rbnode *node)
                node->parent->color = black;
                sibling->left->color = black;
                rotate_right(tree, node->parent);
-               node = rbroot(tree); /* exit loop */
+               node = rbfirst(tree); /* exit loop */
            }
        }
     }