diff options
author | Saket Dumbre <97769119+sacdintel@users.noreply.github.com> | 2023-03-22 15:37:15 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-22 15:37:15 -0700 |
commit | 4cd8ab6dec589352cbdf9fe735cf89f21ff378d1 (patch) | |
tree | 48b23b67475251390925b199607fbe0bcde95238 | |
parent | 920b610f7663c732fab41da4783f030bba8da40f (diff) | |
parent | c14708336bd18552b28643575de7b5beb9b864e9 (diff) | |
download | acpica-4cd8ab6dec589352cbdf9fe735cf89f21ff378d1.tar.gz |
Merge pull request #848 from tamird/ub-member-access-within-misaligned-address
Avoid undefined behavior: member access within misaligned address
-rw-r--r-- | source/components/resources/rsaddr.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/components/resources/rsaddr.c b/source/components/resources/rsaddr.c index 08cea5c49..46f38bc7b 100644 --- a/source/components/resources/rsaddr.c +++ b/source/components/resources/rsaddr.c @@ -433,11 +433,15 @@ AcpiRsGetAddressCommon ( { ACPI_FUNCTION_ENTRY (); + /* Avoid undefined behavior: member access within misaligned address */ + + AML_RESOURCE_ADDRESS Address; + memcpy(&Address, Aml, sizeof(Address)); /* Validate the Resource Type */ - if ((Aml->Address.ResourceType > 2) && - (Aml->Address.ResourceType < 0xC0)) + if ((Address.ResourceType > 2) && + (Address.ResourceType < 0xC0)) { return (FALSE); } @@ -464,7 +468,7 @@ AcpiRsGetAddressCommon ( /* Generic resource type, just grab the TypeSpecific byte */ Resource->Data.Address.Info.TypeSpecific = - Aml->Address.SpecificFlags; + Address.SpecificFlags; } return (TRUE); |