Merge "Verify presence of _FileAsset::getBuffer data" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-05-27 21:16:01 +00:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 3 deletions

View File

@@ -594,7 +594,12 @@ void _FileAsset::close(void)
*/ */
const void* _FileAsset::getBuffer(bool aligned) const void* _FileAsset::getBuffer(bool aligned)
{ {
return getIncFsBuffer(aligned).unsafe_ptr(); auto buffer = getIncFsBuffer(aligned);
if (mBuf != NULL)
return mBuf;
if (!buffer.convert<uint8_t>().verify(mLength))
return NULL;
return buffer.unsafe_ptr();
} }
incfs::map_ptr<void> _FileAsset::getIncFsBuffer(bool aligned) incfs::map_ptr<void> _FileAsset::getIncFsBuffer(bool aligned)

View File

@@ -91,7 +91,8 @@ public:
* Get a pointer to a buffer with the entire contents of the file. * Get a pointer to a buffer with the entire contents of the file.
* If `aligned` is true, the buffer data will be aligned to a 4-byte boundary. * If `aligned` is true, the buffer data will be aligned to a 4-byte boundary.
* *
* Use this function if the asset can never reside on IncFs. * If the buffer contents reside on IncFs, the entire buffer will be scanned to ensure the
* presence of the data before returning a raw pointer to the buffer.
*/ */
virtual const void* getBuffer(bool aligned) = 0; virtual const void* getBuffer(bool aligned) = 0;
@@ -99,7 +100,8 @@ public:
* Get a incfs::map_ptr<void> to a buffer with the entire contents of the file. * Get a incfs::map_ptr<void> to a buffer with the entire contents of the file.
* If `aligned` is true, the buffer data will be aligned to a 4-byte boundary. * If `aligned` is true, the buffer data will be aligned to a 4-byte boundary.
* *
* Use this function if the asset can potentially reside on IncFs. * Use this function if the asset can potentially reside on IncFs to avoid the scanning of the
* buffer contents done in Asset::getBuffer.
*/ */
virtual incfs::map_ptr<void> getIncFsBuffer(bool aligned) = 0; virtual incfs::map_ptr<void> getIncFsBuffer(bool aligned) = 0;