IVGCVSW-7848 Add cache size check to Support Library

* Fix for 2 VTS tests named CacheSavingAndRetrievalNonZeroOffset

Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: Id8e02b6383be5706311583aab3f507b5bb43c0bb
diff --git a/shim/sl/canonical/ArmnnDriverImpl.cpp b/shim/sl/canonical/ArmnnDriverImpl.cpp
index 0f7888b..060dd5a 100644
--- a/shim/sl/canonical/ArmnnDriverImpl.cpp
+++ b/shim/sl/canonical/ArmnnDriverImpl.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -400,6 +400,11 @@
     pread(*dataCacheHandle[0], hashValue.data(), hashValue.size(), 0);
 
     // Read the model
+    if (cachedDataSize < hashValue.size())
+    {
+        return NN_ERROR(ErrorStatus::GENERAL_FAILURE)
+                << "ArmnnDriverImpl::prepareModelFromCache(): cachedDataSize is less than hashValue!";
+    }
     std::vector<uint8_t> dataCacheData(cachedDataSize - hashValue.size());
     pread(*dataCacheHandle[0], dataCacheData.data(), dataCacheData.size(), hashValue.size());
     auto calculatedHashValue = Hash(dataCacheData);