On Mon, Jan 24, 2022 at 5:45 PM Zhou Qingyang <zhou1615@xxxxxxx> wrote: > > In acpi_db_convert_to_package(), the variable elements is assigned by > ACPI_ALLOCATE_ZEROED() and passes its address to > acpi_db_convert_to_object(). In that function we may have a dereference > of elements without checks. ACPI_ALLOCATE_ZEROED() would return NULL on > failure, which may lead to NULL pointer dereference. > > Fix this bug by adding a NULL check of elements. > > This bug was found by a static analyzer. > > Builds with 'make allyesconfig' show no new warnings, > and our static analyzer no longer warns about this code. > > Fixes: 995751025572 ("ACPICA: Linuxize: Export debugger files to Linux") > Signed-off-by: Zhou Qingyang <zhou1615@xxxxxxx> This is ACPICA material and so it should be submitted as a change against the upstream code via https://github.com/acpica/acpica Thanks! > --- > The analysis employs differential checking to identify inconsistent > security operations (e.g., checks or kfrees) between two code paths > and confirms that the inconsistent operations are not recovered in the > current function or the callers, so they constitute bugs. > > Note that, as a bug found by static analysis, it can be a false > positive or hard to trigger. Multiple researchers have cross-reviewed > the bug. > > drivers/acpi/acpica/dbconvert.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/acpi/acpica/dbconvert.c b/drivers/acpi/acpica/dbconvert.c > index 2b84ac093698..8dbab6932049 100644 > --- a/drivers/acpi/acpica/dbconvert.c > +++ b/drivers/acpi/acpica/dbconvert.c > @@ -174,6 +174,8 @@ acpi_status acpi_db_convert_to_package(char *string, union acpi_object *object) > elements = > ACPI_ALLOCATE_ZEROED(DB_DEFAULT_PKG_ELEMENTS * > sizeof(union acpi_object)); > + if (!elements) > + return (AE_NO_MEMORY); > > this = string; > for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++) { > -- > 2.25.1 >