diff options
author | 2020-11-13 00:05:40 +0000 | |
---|---|---|
committer | 2020-11-13 00:05:40 +0000 | |
commit | c234812e275368f47d798112e1de49a8aad99753 (patch) | |
tree | 2c029a88ba773fa77936dc89ccd4f6328e2ece07 /libs/androidfw/AssetManager.cpp | |
parent | 8f8eaec80190bc4a35851b9efbef412dd63efb70 (diff) | |
parent | 5602dc9374934a42964e0f57faa3c0aad43003e1 (diff) |
Merge changes from topic "libaw-hardening"
* changes:
Do not cache bag parent stack until requested
Cache resolved theme values
libandroidfw hardening for IncFs
Diffstat (limited to 'libs/androidfw/AssetManager.cpp')
-rw-r--r-- | libs/androidfw/AssetManager.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp index f7c83371f79c..fb2b57193b83 100644 --- a/libs/androidfw/AssetManager.cpp +++ b/libs/androidfw/AssetManager.cpp @@ -917,7 +917,7 @@ Asset* AssetManager::openAssetFromFileLocked(const String8& pathName, Asset* AssetManager::openAssetFromZipLocked(const ZipFileRO* pZipFile, const ZipEntryRO entry, AccessMode mode, const String8& entryName) { - Asset* pAsset = NULL; + std::unique_ptr<Asset> pAsset; // TODO: look for previously-created shared memory slice? uint16_t method; @@ -932,28 +932,28 @@ Asset* AssetManager::openAssetFromZipLocked(const ZipFileRO* pZipFile, return NULL; } - FileMap* dataMap = pZipFile->createEntryFileMap(entry); - if (dataMap == NULL) { + std::optional<incfs::IncFsFileMap> dataMap = pZipFile->createEntryIncFsFileMap(entry); + if (!dataMap.has_value()) { ALOGW("create map from entry failed\n"); return NULL; } if (method == ZipFileRO::kCompressStored) { - pAsset = Asset::createFromUncompressedMap(dataMap, mode); + pAsset = Asset::createFromUncompressedMap(std::move(*dataMap), mode); ALOGV("Opened uncompressed entry %s in zip %s mode %d: %p", entryName.string(), - dataMap->getFileName(), mode, pAsset); + dataMap->file_name(), mode, pAsset.get()); } else { - pAsset = Asset::createFromCompressedMap(dataMap, + pAsset = Asset::createFromCompressedMap(std::move(*dataMap), static_cast<size_t>(uncompressedLen), mode); ALOGV("Opened compressed entry %s in zip %s mode %d: %p", entryName.string(), - dataMap->getFileName(), mode, pAsset); + dataMap->file_name(), mode, pAsset.get()); } if (pAsset == NULL) { /* unexpected */ ALOGW("create from segment failed\n"); } - return pAsset; + return pAsset.release(); } /* |