Commit Graph

854 Commits

Author SHA1 Message Date
Ryan Mitchell
bf1f45b071 Remove malloc/free for inline overlay values
Remove malloc/free of android::ResTable_entry for inline overlay
values.

Add `target_entry_inline` to the idmap format to encode inline overlay
values separate from direct mapping of target resource to overlay
resource. This reduces the number of bytes needed to represent a direct
mapping of target resource to overlay resource from 9 bytes to 8 bytes
per entry.

Fixed all idmap alignment issues that required the framework to use
"#pragma pack(push, 1)" when loading idmaps.

Bug: 170341022
Test: idmap2_tests and libandroidfw_tests
Change-Id: Iab4d3902508f02773464724913e0ee966e3689e4
2020-10-14 14:52:52 -07:00
Zoran Jovanovic
0f942f99ca OMS: Add config_signature policy handling
Alongside SIGNATURE and ACTOR_SIGNATURE policies, add CONFIG_SIGNATURE
policy to overlayable that overlay fulfills if it is signed with the
same certificate as the reference package whose package name is
declared in 'config-signature' tag of SystemConfig and is vetted by
OMS that it's a system pre-installed package.

BUG: 158726924
TEST: regular aapt2, idmap2, OMS tests

Merged-In: I645ee72271496008742886274be0d63a2985201b
Change-Id: I645ee72271496008742886274be0d63a2985201b
2020-10-14 14:52:46 -07:00
Treehugger Robot
db0a92a881 Merge "Make configs differing only in density siblings" 2020-09-17 17:51:53 +00:00
Ryan Mitchell
0a0bf36555 Make configs differing only in density siblings
Configurations differing only in density value will match the same
device configuration at runtime; therefore, they should be considered
sibling configurations in the dominator tree.

So, given configurations A and B:
1) If A has a density defined and B does not, A must never dominate B.
2) If A and B both have densities defined, neither must dominate the
   other.

Previous behavior:
<default>
  sw600dp-v13
    sw600dp-hdpi-v13
       sw800dp-hdpi-v13
    sw800dp-xxhdpi-v13

New behavior:
<default>
  sw600dp-v13
    sw600dp-hdpi-v13
      sw800dp-hdpi-v13
      sw800dp-xxhdpi-v13

Bug: 167944889
Test: aapt2_tests
Merged-In: Ie9fba4c4b74af2b3bbf8fc6432539a99f8647634
Change-Id: Ie9fba4c4b74af2b3bbf8fc6432539a99f8647634
2020-09-17 08:18:27 -07:00
Xin Li
628590d7ec Merge Android R (rvc-dev-plus-aosp-without-vendor@6692709)
Bug: 166295507
Merged-In: I3d92a6de21a938f6b352ec26dc23420c0fe02b27
Change-Id: Ifdb80563ef042738778ebb8a7581a97c4e3d96e2
2020-08-31 21:21:38 -07:00
Elliott Hughes
a3edc25cda Remove unused #include.
The header is obsolete anyway: new code should just use static_assert.

Test: treehugger
Change-Id: I407ba6e90302557aa8e2604bdd2c6d9129353e9e
2020-08-17 15:59:52 -07:00
Pirama Arumuga Nainar
88db3035b5 Use blocklist sub-property in sanitize
Update language to comply with Android’s inclusive language guidance

See https://source.android.com/setup/contribute/respectful-code for
reference

Bug: 161896447
Bug: 162245450

Test: build topic
Change-Id: I952732a034a660a6a6577195d33b2fc2f4f4c78c
2020-07-28 14:38:20 -07:00
Eduardo Rocha
935178e2fd Fuzzer for libandroidfw
Bug: 161463861
Test: Builds and runs on host and device.

Change-Id: I78b19376275dc5a29afcab48c70eea479bff8728
2020-07-21 13:51:37 +00:00
TreeHugger Robot
5d80a03bb8 Merge "libafw: Use std::free explicitly for overlays" into rvc-dev am: 5dc36b2f9d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11959160

Change-Id: Id5877c6ff2a1b956aeba509ddf01213324621341
2020-06-23 00:43:07 +00:00
Ryan Mitchell
c4142d91f5 libafw: Use std::free explicitly for overlays
Currently we rely on libc to call std::free on the malloced pointer to
the overlay table entry. Rather than relying on the libc implementation
to call std::free instead of trying to delete the pointer as if it was
created using "new", explicitly pass std::free as the deleter to the
data held by the std::shared_ptr.

Bug: 159562360
Test: Observed no heap growth while looping infinitely and retrieving
      a string resource overlaid using an inline xml value
Change-Id: I9a2ebaf9a993ad9c44fab8f052430c8142d4347d
2020-06-22 15:50:14 -07:00
Ryan Mitchell
1b4cda227a Merge "Add policies and enforce overlayable to header" into rvc-dev am: 2201f8b626
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11481145

Change-Id: I71ff9f46e1e5a5016291a062dd5389078527588f
2020-06-05 16:11:20 +00:00
Ryan Mitchell
2201f8b626 Merge "Add policies and enforce overlayable to header" into rvc-dev 2020-06-05 16:07:28 +00:00
Ryan Mitchell
a707013b78 Add policies and enforce overlayable to header
If the fulfilled policies change without the contents of the target
and overlay APKs changing, the idmap for the overlay should be
regenerated. This change adds fulfilled policies and enforce
overlayable to the idmap header so that idmap2d can determine if the
polices or enforce overlayable changed from what was used to generate
the idmap.

Bug: 119328308
Test: idmap2_tests
Test: atest RegenerateIdmapTest

Change-Id: I96f970e82b5243be01b205ac2cb6ab249c6100bc
2020-06-01 16:15:35 -07:00
TreeHugger Robot
b86a44f81a Merge "Avoid Asset::LoadImpl crash when getBuffer is null" into rvc-dev am: 058945a476
Change-Id: I62d137ba7955efb421a8a68466ec83414d1420a3
2020-05-29 17:52:55 +00:00
Ryan Mitchell
d338dfe583 Avoid Asset::LoadImpl crash when getBuffer is null
If for some reason Asset::getBuffer returns a null pointer, error out
instead of dereferencing the null pointer.

Bug: 125943266
Bug: 154461471

Test: boots
Change-Id: I957be4f9b8c49c2a6829e8b82fae0ae8d8d7639e
2020-05-28 14:03:27 -07:00
Ryan Mitchell
5a57f52b6b Merge "Fail install when resources.arsc is compressed" into rvc-dev am: b8a61d13c2
Change-Id: Ib01a8e7b83525cf420dae44758fcc214669d887d
2020-04-13 15:14:05 +00:00
Ryan Mitchell
b8a61d13c2 Merge "Fail install when resources.arsc is compressed" into rvc-dev 2020-04-13 14:57:19 +00:00
Ryan Mitchell
cca1593b23 Merge changes from topic "invalidate_idmap" into rvc-dev am: 6cb79cdfb7
Change-Id: Iec3d0e3bab28964442c5aada00c2586e284feb92
2020-04-10 15:53:05 +00:00
Ryan Mitchell
192400cf33 Fail install when resources.arsc is compressed
If an application targets R+, prevent the application from being
installed if the app has a compressed resources.arsc or if the
resources.arsc is not aligned on a 4-byte boundary. Resources tables
that cannot be memory mapped have to be read into a buffer in RAM
and exert unnecessary memory pressure on the system.

Bug: 132742131
Test: manual (adding CTS tests)
Change-Id: Ieef764c87643863de24531fac12cc520fe6d90d0
2020-04-09 11:01:54 -07:00
Ryan Mitchell
a90930528d Invalidate idmap when target updates
When the target package update, check if the idmap file must change.
If so, propagate the idmap changes to the targets overlay paths, and
invalidate cached overlay ApkAssets in ResourcesManager.

Bug: 147794117
Bug: 150877400
Test: OverlayRemountedTest
Test: libandroidfw_tests
Change-Id: I6115c30bae3672b188a5ff270720a0eea15b43b5
2020-04-07 12:14:51 -07:00
Tianjie Xu
289e25ee9b Merge "Change the parameter type of offset in read" am: 74a5df06af am: eead9e3eda
Change-Id: Ie2996a6fc8f7d08f3f77589e439557b42f4ed56a
2020-04-04 20:40:28 +00:00
Tianjie Xu
b2415d3b32 Merge "Change the parameter type of offset in read" am: 74a5df06af am: eead9e3eda
Change-Id: I4ad529b54e83421488d341d8f25def5d1cc2df54
2020-04-04 20:39:31 +00:00
Ryan Mitchell
d856e14c8d Merge "Begin moving FrameworkResourceLoaderTest to cts" into rvc-dev am: 1b922d56c0
Change-Id: Ia9e28c0697da0f848c9e1996b345e3b18f8ae9b6
2020-04-03 16:09:59 +00:00
Tianjie
01ae3f4157 Change the parameter type of offset in read
As we support zip64 in libziparchive, we change the parameter of
the ReadAtOffset() in zip reader from uin32_t to off64_t. So the
derived class needs to be updated as well.

Bug: 150900468
Test: build
Change-Id: Icbfd2dd54b01ff62da988ba8598c1057f9bb6368
2020-04-02 06:16:21 +00:00
Ryan Mitchell
199b09a1a7 Begin moving FrameworkResourceLoaderTest to cts
This changes removes FrameworkResourceLoaderTest from frameworks/base
before it is moved to CTS.

Bug: 152979463
Test: atest CtsResourcesLoaderTest
Change-Id: I4b899564ab93472cb6d2a5ed0917026753c2827f
2020-04-01 20:09:29 +00:00
Ryan Mitchell
3769911736 Merge changes If7ea17d5,If6364fd6 into rvc-dev am: 8275fb7d66
Change-Id: Iaa34df4fc6cce09177547a11497d28fa1ce9cdb5
2020-03-27 17:49:56 +00:00
Tobias Thierer
0b4d263ca7 Merge "OWNERS: tobiast -> ngeoffray." am: 9c0d26b4cb am: d9b0a60742
Change-Id: I5b781cfc5b6383c61087b796e0e344be084d3dc9
2020-03-27 11:51:34 +00:00
Tobias Thierer
5bd921f8c3 Merge "OWNERS: tobiast -> ngeoffray." am: 9c0d26b4cb am: d9b0a60742
Change-Id: I34cec5528243e6655287ba020eef5abf7e2ca114
2020-03-27 11:51:27 +00:00
Tobias Thierer
fa82e757dd OWNERS: tobiast -> ngeoffray.
This CL topic was created via:

  find . -name OWNERS | xargs grep -l tobiast | xargs sed \
  -i 's/tobiast/ngeoffray/g'

Plus appropriate repo start, git commit, repo upload commands:

  while read proj; do croot $proj ; repo start OWNERS-tobiast-ngeoffray ; \
  git commit -F ~/commit-message.txt; croot ; done \
  < ~/owners-projects.txt

  repo upload -t --br=OWNERS-tobiast-ngeoffray

No attempt was made to sort the files after the replacement.

Exempt-From-Owner-Approval: Both old and new owner are on this CL.
Test: Manually inspected the result.
Bug: 152399425
Change-Id: I2f100a71d399a7d4d46ea036fff564ff5c5dbda7
2020-03-26 14:10:06 +00:00
Ryan Mitchell
824cc490c5 Assigned package ids to overlays last
Before overlays could reference internal resources, overlays were
added to AssetManagers before shared libraries. Overlays are now
loaded as shared libraries so they must be assigned package ids
after non-overlay shared libraries so enabling and disabling
overlays does not affect the package ids of the non-overlay shared
libraries.

Since overlays are added to the end of the AssetManager by
ResourcesManager, enabling and disabling overlays will not change
the assets cookie of shared libraries loaded through ResourcesManager,
but it will change the apk assets cookie or overlays added through
AssetManager#addAssetPathAsSharedLibrary.

The package ids of shared libraries added through
AssetManager#addAssetPathAsSharedLibrary will not be affected by
overlays since overlay package ids are assigned last.

Bug: 146685730
Test: CtsHostsideWebViewTests
Change-Id: If7ea17d51b18769bf2465e29af3ae6a71004d06c
2020-03-23 18:14:11 -07:00
Ryan Mitchell
b894c274d0 Revert "Assign shared libraries stable package ids"
This change must be reverted because it broke packages with the same
package name but different package ids loaded at once.

Bug: 146685730
Test: MultiSplitInstallTest
This reverts commit fe50d739f7.

Change-Id: If6364fd660c76284452f77e7d4f09a3df9dede1d
2020-03-23 18:05:40 -07:00
TreeHugger Robot
be6970b281 Merge "Fix security issue in DynamicRefTable::load." into qt-qpr1-dev am: 084cc32ce8
Change-Id: Ie35cf55cff2162394abae816d1cfb0eefdc0aab6
2020-03-23 19:38:50 +00:00
Ryan Mitchell
c5f968d58b Merge changes from topic "res_loader_dir" into rvc-dev am: b0544a733c
Change-Id: I18c28c7293a24d712940c9e80e7817f9547512f8
2020-03-20 18:21:20 +00:00
Ryan Mitchell
b0544a733c Merge changes from topic "res_loader_dir" into rvc-dev
* changes:
  Allow using loaders on non-RM Resources instances
  Move AssetsProvider to native layer
  Add ResourcesProvider.loadFromDirectory
  Refactor tests for ApkAsset loading APIs
  Refactor ApkAsset loading APIs
  Fix bugprone-use-after-move warnings
  Fix bugprone-use-after-move warnings
2020-03-20 18:16:30 +00:00
Ryan Mitchell
39cacf2de7 Allow using loaders on non-RM Resources instances
Currently there is a limitation where ResourcesLoaders cannot be  used
on Resources object not created through ResourcesManager. This change
creates an update handler for Resources objects that are not registered
with ResourcesManager.

The handler changes the loaders on the asset manager owned by the
Resources instance.

Bug: 151666644
Test: atest ResourceLoaderValuesTest
Change-Id: I5a89f686386bdb088dc964014e7becc0c2b4770f
2020-03-19 18:33:55 -07:00
Ryan Mitchell
4ea1e42889 Move AssetsProvider to native layer
Querying in the native layer for assets provided through
AssetsProviders does not currently work. This change refactors the
AssetProvider API to return a file descriptor that is read in the
native layer and can bubble up to the java layer.

This change also removes the InputStream API to favor of developers
using memfd_create.

Bug: 142716192
Test: atest ResourceLoaderValuesTest
Change-Id: I1a7eca0994c3b7cc32008d9a72bf91086ff0e816
2020-03-19 18:33:55 -07:00
Ryan Mitchell
c07aa70270 Add ResourcesProvider.loadFromDirectory
This API allows a directory to be loaded as if it was a zipped APK.
This is a substitute for the DirectoryAssetProvider API that
currently does not work in the native layer.

Bug: 142716192
Test: atest FrameworksResourceLoaderTests
Change-Id: Ia13e15653e75b421423dd56f9fe89e183ab4cb9a
2020-03-19 18:33:55 -07:00
Ryan Mitchell
ef40d2e832 Refactor ApkAsset loading APIs
To add the partner requested ResourcesProvider#loadFromDir APIs, this
change adds format type integer that allows us to reduce the number of
ApkAssets loading overrides.

This change also adds hidden offset and length based ResourcesProvider
APIs that could not make R.

Bug: 142716192
Test: atest FrameworksResourceLoaderTests
Change-Id: I926fde257cae701901dcd4ca408024feae8c90a6
Merged-In: I926fde257cae701901dcd4ca408024feae8c90a6
2020-03-19 18:33:55 -07:00
Ryan Mitchell
e35e87f514 Fix bugprone-use-after-move warnings
Bug: 150783499
Test: WITH_TIDY=1 make
Change-Id: I185cb21521676ddbc4f2b7f098611a2efc7275e6
(cherry picked from commit c658184d36)
Merged-In: I185cb21521676ddbc4f2b7f098611a2efc7275e6
2020-03-19 16:57:50 -07:00
Automerger Merge Worker
a4e3d254b5 Merge "Fix bugprone-copy-constructor-init warnings" am: 4dc2f8f773 am: 87158910b0
Change-Id: I6845ad403b8b7c4572053fc49998ed5e7c01c6be
2020-03-17 19:55:19 +00:00
Treehugger Robot
4dc2f8f773 Merge "Fix bugprone-copy-constructor-init warnings" 2020-03-17 19:26:33 +00:00
Chih-hung Hsieh
0dbbb661cf Merge "Fix bugprone-use-after-move warnings" 2020-03-17 18:34:53 +00:00
Nikita Iashchenko
93a9e785ea Regenerate LocaleDataTables.cpp wtih Unicode 13 update
LocaleDataTables.cpp is regenerated with Unicode 13 updates from CLDR.

Bug: 149845726
Test: ./tools/localedata/extract_icu_data.py $ANDROID_BUILD_TOP
Test: m droid
Merged-In: Id2d023723b50c1c2f73fe07f46fb9b3cae990752
Change-Id: Id2d023723b50c1c2f73fe07f46fb9b3cae990752
2020-03-16 12:39:27 +00:00
Automerger Merge Worker
61c63c35f4 Regenerate LocaleDataTables.cpp wtih Unicode 13 update am: 7ea3b2164d am: 92ea9b82fc
Change-Id: I244c9ab135705cafbc492d5d98d238eb31168ac7
2020-03-11 20:32:14 +00:00
Chih-Hung Hsieh
3fb38f7fe2 Fix bugprone-copy-constructor-init warnings
* normally a copy constructor should call base copy constructor

Bug: 151109313
Test: WITH_TIDY=1 make
Change-Id: I9677889973178c26cd787a457333877619956b51
2020-03-10 12:58:29 -07:00
Chih-Hung Hsieh
933c7a612e Fix bugprone-use-after-move warnings
Bug: 150783499
Test: WITH_TIDY=1 make
Change-Id: I185cb21521676ddbc4f2b7f098611a2efc7275e6
Merged-In: I185cb21521676ddbc4f2b7f098611a2efc7275e6
(cherry picked from commit c658184d36)
2020-03-09 19:08:27 +00:00
Chih-Hung Hsieh
243bc1929b Fix bugprone-use-after-move warnings
Bug: 150783499
Test: WITH_TIDY=1 make
Change-Id: I185cb21521676ddbc4f2b7f098611a2efc7275e6
(cherry picked from commit c658184d36)
Merged-In: I185cb21521676ddbc4f2b7f098611a2efc7275e6
2020-03-06 14:00:53 -08:00
Nikita Iashchenko
7ea3b2164d Regenerate LocaleDataTables.cpp wtih Unicode 13 update
LocaleDataTables.cpp is regenerated with Unicode 13 updates from CLDR.

Bug: 149845726
Test: ./tools/localedata/extract_icu_data.py $ANDROID_BUILD_TOP
Test: m droid
Change-Id: Id2d023723b50c1c2f73fe07f46fb9b3cae990752
2020-03-06 11:34:51 +00:00
Automerger Merge Worker
5908c4f02c Merge "Use String8 ostream from String8.h" am: a9117815ed am: 1257bc0b9d
Change-Id: I2d6799c5022878a7d813b25b6ca05d92e87f0478
2020-02-27 23:34:15 +00:00
Winson
f56ade365a Actor signature overlayable policy
There are cases where an app can ship overlays for itself,
but the "signature" policy as described would open up
a vulnerability by allowing the system actor to create
and sign any arbitrary overlay that will apply to the target.

To prevent this, redefine "signature" as target package only,
and introduce "actor" for checking against the actor signature.
Any app that wishes to use both can include both policies.

Bug: 130563563

Test: m aapt2_tests idmapt2_tests and run from host test output
Test: atest libandroidfw_tests

Change-Id: I1c583a5b37f4abbeb18fc6a35c502377d8977a41
2020-02-26 15:59:44 -08:00