diff options
Diffstat (limited to 'source/components/resources/rsxface.c')
-rw-r--r-- | source/components/resources/rsxface.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source/components/resources/rsxface.c b/source/components/resources/rsxface.c index b107ddd..36edc81 100644 --- a/source/components/resources/rsxface.c +++ b/source/components/resources/rsxface.c @@ -630,7 +630,7 @@ AcpiWalkResourceBuffer ( while (Resource < ResourceEnd) { - /* Sanity check the resource */ + /* Sanity check the resource type */ if (Resource->Type > ACPI_RESOURCE_TYPE_MAX) { @@ -638,6 +638,13 @@ AcpiWalkResourceBuffer ( break; } + /* Sanity check the length. It must not be zero, or we loop forever */ + + if (!Resource->Length) + { + return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH); + } + /* Invoke the user function, abort on any error returned */ Status = UserFunction (Resource, Context); |