summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaket Dumbre <97769119+sacdintel@users.noreply.github.com>2023-03-22 15:37:15 -0700
committerGitHub <noreply@github.com>2023-03-22 15:37:15 -0700
commit4cd8ab6dec589352cbdf9fe735cf89f21ff378d1 (patch)
tree48b23b67475251390925b199607fbe0bcde95238
parent920b610f7663c732fab41da4783f030bba8da40f (diff)
parentc14708336bd18552b28643575de7b5beb9b864e9 (diff)
downloadacpica-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.c10
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);