IVGCVSW-5766 Avoiding driver abort when Cts tests use invalid filter shape.

* A number of DepthwiseConv2d Cts tests pass a filter operand with a
  dimension[0] value greater than 1 in contravention of Android
  documentation. Adding a check to handle this gracefully.
* Changing a hard assert in ConversionUtils::ConstTensorPin to a warning.

Signed-off-by: Colm Donelan <Colm.Donelan@arm.com>
Change-Id: I605340d098b717d1d88d259a0ed89a801287764d
diff --git a/ConversionUtils.cpp b/ConversionUtils.cpp
index b03ffbd..9cc6e28 100644
--- a/ConversionUtils.cpp
+++ b/ConversionUtils.cpp
@@ -62,7 +62,10 @@
                                const armnn::PermutationVector& mappings)
 {
     armnn::IgnoreUnused(numBytes);
-    assert(tensorInfo.GetNumBytes() == numBytes);
+    if (tensorInfo.GetNumBytes() != numBytes)
+    {
+        ALOGW("The size of ConstTensor does not match its TensorInfo.");
+    }
 
     const bool needsSwizzling = (mappings.GetSize() > 0);
     if (needsSwizzling)
diff --git a/ConversionUtils.hpp b/ConversionUtils.hpp
index e5f99ed..439d4a4 100644
--- a/ConversionUtils.hpp
+++ b/ConversionUtils.hpp
@@ -2559,6 +2559,14 @@
     {
         return Fail("%s: Operand is invalid", __func__);
     }
+    // Basic sanity check on the weights shape.
+    // ANEURALNETWORKS_DEPTHWISE_CONV_2D specifies a 4-D tensor, of shape
+    // [1, filter_height, filter_width, depth_out]
+    if (weightsOperand->dimensions[0] != 1)
+    {
+        return Fail("%s: Filter operand dimension 0 is invalid, should be 1", __func__);
+    }
+
     armnn::DepthwiseConvolution2dDescriptor desc;
     desc.m_DataLayout = armnn::DataLayout::NHWC;