[circle-inspect] Add verify model file (#8849)
author박세희/On-Device Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Fri, 8 Nov 2019 04:28:22 +0000 (13:28 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Fri, 8 Nov 2019 04:28:22 +0000 (13:28 +0900)
This will add model verify step before inspection to prevent segmentation fault with invalid files

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
compiler/circle-inspect/src/Model.cpp

index 4b729a5..fec1eb9 100644 (file)
@@ -127,6 +127,16 @@ std::unique_ptr<Model> load_circle(const std::string &path)
     return nullptr;
   }
 
+  // Check if file is a valid Flatbuffer file
+  const uint8_t *u8data = reinterpret_cast<const uint8_t *>(data);
+  flatbuffers::Verifier verifier{u8data, size};
+  if (!circle::VerifyModelBuffer(verifier))
+  {
+    munmap(data, size);
+    close(fd.release());
+    return nullptr;
+  }
+
   return std::unique_ptr<circleinspect::Model>{new MemoryMappedModel(fd.release(), data, size)};
 }