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 {