[PATCH] acpica: Fix segfault when disassembling AML (LP: #1050475)
Colin King
colin.king at canonical.com
Thu Sep 13 16:04:22 UTC 2012
From: Colin Ian King <colin.king at canonical.com>
Running fwts against a collection of test tables I found a segfault
in source/components/disassembler/dmopcode.c:334, due to Tag being
null. This patch is a fix from Robert Moore at Intel which will land
in the September release of ACPICA/iASL.
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/acpica/source/common/dmrestag.c | 5 +++++
src/acpica/source/components/disassembler/dmopcode.c | 4 ++++
2 files changed, 9 insertions(+)
diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
index 9afaad3..3097f15 100644
--- a/src/acpica/source/common/dmrestag.c
+++ b/src/acpica/source/common/dmrestag.c
@@ -541,6 +541,11 @@ AcpiDmCheckResourceReference (
/* Get the Index term, must be an integer constant to convert */
IndexOp = BufferNameOp->Common.Next;
+
+ /* Major cheat: The Node field is also used for the Tag ptr. Clear it now */
+
+ IndexOp->Common.Node = NULL;
+
OpInfo = AcpiPsGetOpcodeInfo (IndexOp->Common.AmlOpcode);
if (OpInfo->ObjectType != ACPI_TYPE_INTEGER)
{
diff --git a/src/acpica/source/components/disassembler/dmopcode.c b/src/acpica/source/components/disassembler/dmopcode.c
index 252b1b8..c6fa387 100644
--- a/src/acpica/source/components/disassembler/dmopcode.c
+++ b/src/acpica/source/components/disassembler/dmopcode.c
@@ -326,6 +326,10 @@ AcpiDmFieldPredefinedDescription (
/* Major cheat: We previously put the Tag ptr in the Node field */
Tag = ACPI_CAST_PTR (char, IndexOp->Common.Node);
+ if (!Tag)
+ {
+ return;
+ }
/* Match the name in the info table */
--
1.7.10.4
More information about the fwts-devel
mailing list