1 Star 0 Fork 26

滕磊/unbound

forked from src-openEuler/unbound 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
backport-CVE-2024-43167-CVE-2024-43168.patch 2.02 KB
一键复制 编辑 原始数据 按行查看 历史
wxm 提交于 2024-08-13 14:04 . fix cve CVE-2024-43167 CVE-2024-43168
From 9ffcad93b6452d1a7c1c13fa2bc23f46c47f2dc6 Mon Sep 17 00:00:00 2001
From: wangxiaomeng <wangxiaomeng@kylinos.cn>
Date: Tue, 13 Aug 2024 15:03:59 +0800
Subject: [PATCH] backport CVE-2024-43167 CVE-2024-43168
---
libunbound/libunbound.c | 7 +++++--
util/config_file.c | 4 ++++
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c
index 80a82bb..c52114d 100644
--- a/libunbound/libunbound.c
+++ b/libunbound/libunbound.c
@@ -976,7 +976,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;
@@ -996,7 +997,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);
@@ -1014,6 +1016,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);
diff --git a/util/config_file.c b/util/config_file.c
index 6d357c5..7d0124f 100644
--- a/util/config_file.c
+++ b/util/config_file.c
@@ -1745,6 +1745,10 @@ cfg_mark_ports(const char* str, int allow, int* avail, int num)
#endif
if(!mid) {
int port = atoi(str);
+ if(port < 0) {
+ log_err("Prevent out-of-bounds access to array avail");
+ return 0;
+ }
if(port == 0 && strcmp(str, "0") != 0) {
log_err("cannot parse port number '%s'", str);
return 0;
--
2.43.0
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/teng-lei0416/unbound.git
git@gitee.com:teng-lei0416/unbound.git
teng-lei0416
unbound
unbound
master

搜索帮助