From 8facf7af35ae12fb6b5eb159eccbbf3b2ca49c3c Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Thu, 25 Jul 2019 15:40:26 -0700 Subject: Check Android container item MIME type Android depth photos item mime type must be according to the dynamic depth spec. Bug: 138399780 Test: runtest -x cts/tests/camera/src/android/hardware/camera2/cts/ImageReaderTest.java -m testDynamicDepth Change-Id: I6ad6a1c581ba8a12884785171bc2f9b7360a4fb4 --- internal/dynamic_depth/depth_jpeg.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/internal/dynamic_depth/depth_jpeg.cc b/internal/dynamic_depth/depth_jpeg.cc index 396a41e..af2ead9 100644 --- a/internal/dynamic_depth/depth_jpeg.cc +++ b/internal/dynamic_depth/depth_jpeg.cc @@ -19,6 +19,7 @@ namespace dynamic_depth { int32_t ValidateAndroidDynamicDepthBuffer(const char* buffer, size_t buffer_length) { XmpData xmp_data; + std::string itemMime("image/jpeg"); const string image_data(buffer, buffer_length); ReadXmpFromMemory(image_data, /*XmpSkipExtended*/ false, &xmp_data); @@ -29,6 +30,18 @@ int32_t ValidateAndroidDynamicDepthBuffer(const char* buffer, size_t buffer_leng return -1; } + // Check the container items mime type + if ((device->GetContainer() == nullptr) || (device->GetContainer()->GetItems().empty())) { + LOG(ERROR) << "No container or container items found!"; + return -1; + } + auto items = device->GetContainer()->GetItems(); + for (const auto& item : items) { + if (item->GetMime() != itemMime) { + LOG(ERROR) << "Item MIME type doesn't match the expected value: " << itemMime; + return -1; + } + } // Check profiles const Profiles* profiles = device->GetProfiles(); if (profiles == nullptr) { -- cgit v1.2.3