[PATCH] acpi: method: add null pointer sanity checks on resource

Colin King colin.king at canonical.com
Thu Jul 4 16:21:47 UTC 2019


From: Colin Ian King <colin.king at canonical.com>

The pointer resource could possibly be null or even a garbage
value when it is dereferenced causing a segmentation fault, so
be extra vigilent, nullify it to start with and add some null
pointer checks to avoid this.

Addresses-Coverity: ("Uninitialized pointer read")
Fixes: 6768f6248e95 ("acpi: method: refine _EVT test")
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
 src/acpi/method/method.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/acpi/method/method.c b/src/acpi/method/method.c
index 787e3438..67a54465 100644
--- a/src/acpi/method/method.c
+++ b/src/acpi/method/method.c
@@ -620,7 +620,7 @@ static void method_test_EVT_return (
 	ACPI_OBJECT *obj,
 	void *private)
 {
-	ACPI_RESOURCE *resource;
+	ACPI_RESOURCE *resource = NULL;
 	ACPI_STATUS   status;
 
 	FWTS_UNUSED(private);
@@ -629,7 +629,7 @@ static void method_test_EVT_return (
 		return;
 
 	status = AcpiBufferToResource(obj->Buffer.Pointer, obj->Buffer.Length, &resource);
-	if (ACPI_FAILURE(status))
+	if (ACPI_FAILURE(status) || !resource)
 		return;
 
 	do {
@@ -643,7 +643,7 @@ static void method_test_EVT_return (
 				check_evt_event(fw, &resource->Data.Gpio);
 
 		resource = ACPI_NEXT_RESOURCE(resource);
-	} while (resource->Type != ACPI_RESOURCE_TYPE_END_TAG);
+	} while (resource && resource->Type != ACPI_RESOURCE_TYPE_END_TAG);
 }
 
 static int method_test_EVT(fwts_framework *fw)
-- 
2.20.1




More information about the fwts-devel mailing list