From 41c0c10f7b9e269480f3d406c2a2ed8975fbacce Mon Sep 17 00:00:00 2001 From: Yurii Zubrytskyi Date: Thu, 20 Feb 2025 22:11:19 -0800 Subject: [res] Add named padding to ResTable_config Follow the way the structs are defined in this file and explicitly pad the structure with a named field. + add some static_assert statements to make sure nothing accidentally breaks binary structure of configs. Test: build + boot Flag: EXEMPT minor refactoring Change-Id: I7e93aa0e92b080d0dcb77c790e5341f2342d7d2d --- libs/androidfw/include/androidfw/ResourceTypes.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libs/androidfw/include/androidfw/ResourceTypes.h b/libs/androidfw/include/androidfw/ResourceTypes.h index 30594dcfa939..0d45149267cf 100644 --- a/libs/androidfw/include/androidfw/ResourceTypes.h +++ b/libs/androidfw/include/androidfw/ResourceTypes.h @@ -1265,6 +1265,9 @@ struct ResTable_config // Varies in length from 3 to 8 chars. Zero-filled value. char localeNumberingSystem[8]; + // Mark all padding explicitly so it's clear how much we can expand it. + char endPadding[3]; + void copyFromDeviceNoSwap(const ResTable_config& o) { const auto o_size = dtohl(o.size); if (o_size >= sizeof(ResTable_config)) [[likely]] { @@ -1422,6 +1425,13 @@ struct ResTable_config void swapHtoD_slow(); }; +// Fix the struct size for backward compatibility +static_assert(sizeof(ResTable_config) == 64); + +// Make sure there's no unaccounted padding in the structure. +static_assert(offsetof(ResTable_config, endPadding) + + sizeof(ResTable_config::endPadding) == sizeof(ResTable_config)); + /** * A specification of the resources defined by a particular type. * -- cgit v1.2.3-59-g8ed1b