From 577ffb1abb0ce0dc960a5c107e0677665b35b410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=BD=99?= <1459392684@qq.com> Date: Thu, 1 Aug 2024 14:39:50 +0800 Subject: [PATCH] resolve rbtree null reference MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张余 <1459392684@qq.com> --- .../main/core/src/rbtree.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/services/cert_manager_standard/cert_manager_engine/main/core/src/rbtree.c b/services/cert_manager_standard/cert_manager_engine/main/core/src/rbtree.c index f6ef83f..db41e76 100644 --- a/services/cert_manager_standard/cert_manager_engine/main/core/src/rbtree.c +++ b/services/cert_manager_standard/cert_manager_engine/main/core/src/rbtree.c @@ -29,15 +29,15 @@ #define BLACK 0x80000000 #define RED 0 -#define COLOR(n) ((n)->key & COLOR_MASK) +#define COLOR(n) ((n) == NULL ? BLACK : ((n)->key & COLOR_MASK)) #define IS_RED(n) (COLOR((n)) == RED) #define IS_BLACK(n) (COLOR((n)) == BLACK) -#define SET_COLOR(n, color) ((n)->key = ((n)->key & KEY_MASK) | (color)) +#define SET_COLOR(n, color) if ((n) != NULL) { (n)->key = ((n)->key & KEY_MASK) | (color); }; #define SET_RED(n) SET_COLOR((n), RED) #define SET_BLACK(n) SET_COLOR((n), BLACK) -#define KEY(n) ((n)->key & KEY_MASK) +#define KEY(n) ((n) == NULL ? RED : ((n)->key & KEY_MASK)) #ifdef __cplusplus extern "C" { @@ -239,7 +239,10 @@ static void Transplant(struct RbTree *t, struct RbTreeNode *u, struct RbTreeNode } else { u->p->right = v; } - v->p = u->p; + if (v != NULL) + { + v->p = u->p; + } } static struct RbTreeNode *Minimum(const struct RbTree *t, struct RbTreeNode *x) @@ -350,11 +353,15 @@ int32_t RbTreeDelete(struct RbTree *t, struct RbTreeNode *z) } else { Transplant(t, y, y->right); y->right = z->right; - y->right->p = y; + if (y->right != NULL) { + y->right->p = y; + } } Transplant(t, z, y); y->left = z->left; - y->left->p = y; + if (y->left != NULL) { + y->left->p = y; + } SET_COLOR(y, COLOR(z)); } if (yColor == BLACK) { -- Gitee