DragonFlyBSD Kernel Audit
DF-2589 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/acpica/acpi_panasonic/acpi_panasonic.c b/sys/dev/acpica/acpi_panasonic/acpi_panasonic.c
--- a/sys/dev/acpica/acpi_panasonic/acpi_panasonic.c
+++ b/sys/dev/acpica/acpi_panasonic/acpi_panasonic.c
@@ -274,9 +274,11 @@
 	ret = -1;
 	buf.Length = ACPI_ALLOCATE_BUFFER;
 	buf.Pointer = NULL;
-	AcpiEvaluateObject(h, "SINF", NULL, &buf);
+	if (ACPI_FAILURE(AcpiEvaluateObject(h, "SINF", NULL, &buf)))
+		return (ret);
 	res = (ACPI_OBJECT *)buf.Pointer;
-	if (res->Type == ACPI_TYPE_PACKAGE)
+	if (res != NULL && res->Type == ACPI_TYPE_PACKAGE &&
+	    index < res->Package.Count)
 		ret = res->Package.Elements[index].Integer.Value;
 	AcpiOsFree(buf.Pointer);