46 lines
1.6 KiB
Diff
46 lines
1.6 KiB
Diff
From 8e43e2574c4e02f79c562a061581cdcefe136912 Mon Sep 17 00:00:00 2001
|
|
From: zhailiangliang <zhailiangliang@loongson.cn>
|
|
Date: Tue, 21 May 2024 08:40:16 +0000
|
|
Subject: [PATCH] fix null pointer dereference issue in function ub_ctx_set_fwd
|
|
of file libunbound/libunbound.c
|
|
|
|
---
|
|
libunbound/libunbound.c | 7 +++++--
|
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c
|
|
index 17057ec6..3c895514 100644
|
|
--- a/libunbound/libunbound.c
|
|
+++ b/libunbound/libunbound.c
|
|
@@ -981,7 +981,8 @@ ub_ctx_set_fwd(struct ub_ctx* ctx, const char* addr)
|
|
if(!addr) {
|
|
/* disable fwd mode - the root stub should be first. */
|
|
if(ctx->env->cfg->forwards &&
|
|
- strcmp(ctx->env->cfg->forwards->name, ".") == 0) {
|
|
+ (ctx->env->cfg->forwards->name &&
|
|
+ strcmp(ctx->env->cfg->forwards->name, ".") == 0)) {
|
|
s = ctx->env->cfg->forwards;
|
|
ctx->env->cfg->forwards = s->next;
|
|
s->next = NULL;
|
|
@@ -1001,7 +1002,8 @@ ub_ctx_set_fwd(struct ub_ctx* ctx, const char* addr)
|
|
/* it parses, add root stub in front of list */
|
|
lock_basic_lock(&ctx->cfglock);
|
|
if(!ctx->env->cfg->forwards ||
|
|
- strcmp(ctx->env->cfg->forwards->name, ".") != 0) {
|
|
+ (ctx->env->cfg->forwards->name &&
|
|
+ strcmp(ctx->env->cfg->forwards->name, ".") != 0)) {
|
|
s = calloc(1, sizeof(*s));
|
|
if(!s) {
|
|
lock_basic_unlock(&ctx->cfglock);
|
|
@@ -1019,6 +1021,7 @@ ub_ctx_set_fwd(struct ub_ctx* ctx, const char* addr)
|
|
ctx->env->cfg->forwards = s;
|
|
} else {
|
|
log_assert(ctx->env->cfg->forwards);
|
|
+ log_assert(ctx->env->cfg->forwards->name);
|
|
s = ctx->env->cfg->forwards;
|
|
}
|
|
dupl = strdup(addr);
|
|
--
|
|
2.33.0
|
|
|