Merge "Ensure correct read of jpeg header blob" into tm-dev am: e2d9f79f35 am: df77db76cf

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18624617

Change-Id: I99be1628f07ba4ddd5adbc73c0eab0045521bb47
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Avichal Rakesh
2022-06-06 23:02:39 +00:00
committed by Automerger Merge Worker

View File

@@ -123,10 +123,15 @@ uint32_t Image_getBlobSize(LockedImage* buffer, bool usingRGBAOverride) {
// First check for BLOB transport header at the end of the buffer
uint8_t* header = blobBuffer + (width - sizeof(struct camera3_jpeg_blob_v2));
struct camera3_jpeg_blob_v2 *blob = (struct camera3_jpeg_blob_v2*)(header);
if (blob->jpeg_blob_id == CAMERA3_JPEG_BLOB_ID ||
blob->jpeg_blob_id == CAMERA3_HEIC_BLOB_ID) {
size = blob->jpeg_size;
// read camera3_jpeg_blob_v2 from the end of the passed buffer.
// requires memcpy because 'header' might not be properly aligned.
struct camera3_jpeg_blob_v2 blob;
memcpy(&blob, header, sizeof(struct camera3_jpeg_blob_v2));
if (blob.jpeg_blob_id == CAMERA3_JPEG_BLOB_ID ||
blob.jpeg_blob_id == CAMERA3_HEIC_BLOB_ID) {
size = blob.jpeg_size;
ALOGV("%s: Jpeg/Heic size = %d", __FUNCTION__, size);
}