gralloc: Check HDR dynamic metadata size before returning.
CRs-Fixed: 2638571
Change-Id: Ie61b4362ba253d2bec7b8e72272aee76ed9c8269
diff --git a/gralloc/gr_buf_mgr.cpp b/gralloc/gr_buf_mgr.cpp
index e9fcb81..b6dc2a0 100644
--- a/gralloc/gr_buf_mgr.cpp
+++ b/gralloc/gr_buf_mgr.cpp
@@ -928,9 +928,10 @@
}
case (int64_t)StandardMetadataType::SMPTE2094_40: {
std::vector<uint8_t> dynamic_metadata_payload;
- if (metadata->color.dynamicMetaDataValid) {
+ if (metadata->color.dynamicMetaDataValid &&
+ metadata->color.dynamicMetaDataLen <= HDR_DYNAMIC_META_DATA_SZ) {
dynamic_metadata_payload.resize(metadata->color.dynamicMetaDataLen);
- memcpy(&dynamic_metadata_payload, &metadata->color.dynamicMetaDataPayload,
+ memcpy(dynamic_metadata_payload.data(), &metadata->color.dynamicMetaDataPayload,
metadata->color.dynamicMetaDataLen);
android::gralloc4::encodeSmpte2094_40(dynamic_metadata_payload, out);
} else {