acpica: fix CVE-2024-24856

The memory allocation function ACPI_ALLOCATE_ZEROED does not guarantee a
successful allocation, but the subsequent code directly dereferences the
pointer that receives it, which may lead to null pointer dereference. To
fix this issue, a null pointer check should be added. If it is null,
return exception code AE_NO_MEMORY.

Refer: https://nvd.nist.gov/vuln/detail/CVE-2024-24856

(From OE-Core rev: 5c590ccd1973d343f47e7b7171691400490dfc1a)

Signed-off-by: Changqing Li <changqing.li@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
Changqing Li 2024-11-25 12:55:45 +08:00 committed by Steve Sakoman
parent 6653eb6e90
commit 1cb4e6a502
2 changed files with 33 additions and 1 deletions

View File

@ -16,7 +16,8 @@ COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
DEPENDS = "m4-native flex-native bison-native"
SRC_URI = "git://github.com/acpica/acpica;protocol=https;branch=master"
SRC_URI = "git://github.com/acpica/acpica;protocol=https;branch=master \
file://CVE-2024-24856.patch"
SRCREV = "170fc3076a86777077637f10b05c32ac21ac13aa"
S = "${WORKDIR}/git"

View File

@ -0,0 +1,31 @@
From 4d4547cf13cca820ff7e0f859ba83e1a610b9fd0 Mon Sep 17 00:00:00 2001
From: Huai-Yuan Liu <qq810974084@gmail.com>
Date: Tue, 9 Apr 2024 23:23:39 +0800
Subject: [PATCH] check null return of ACPI_ALLOCATE_ZEROED in
AcpiDbConvertToPackage
ACPI_ALLOCATE_ZEROED may fails, Elements might be null and will cause null pointer dereference later.
Signed-off-by: Huai-Yuan Liu <qq810974084@gmail.com>
CVE: CVE-2024-24856
Upstream-Status: Backport [https://github.com/acpica/acpica/pull/946/commits/4d4547cf13cca820ff7e0f859ba83e1a610b9fd0]
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
source/components/debugger/dbconvert.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/source/components/debugger/dbconvert.c b/source/components/debugger/dbconvert.c
index 6a41000036..32ad5be179 100644
--- a/source/components/debugger/dbconvert.c
+++ b/source/components/debugger/dbconvert.c
@@ -354,6 +354,8 @@ AcpiDbConvertToPackage (
Elements = ACPI_ALLOCATE_ZEROED (
DB_DEFAULT_PKG_ELEMENTS * sizeof (ACPI_OBJECT));
+ if (!Elements)
+ return (AE_NO_MEMORY);
This = String;
for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++)