Prevent DiagnosticHalService from crashing if the OBD2_*_FRAME configuration array is empty.

Test: TARGET_USES_CAR_FUTURE_FEATURES=true runtest -x packages/services/Car/tests/carservice_test/src/com/android/car/test/CarDiagnosticManagerTest.java
For O-MR1

Change-Id: I15fa0ebc15ea8302f971b3ec38cd563a8fe2b646
diff --git a/service/src/com/android/car/hal/DiagnosticHalService.java b/service/src/com/android/car/hal/DiagnosticHalService.java
index f64e49c..84e3678 100644
--- a/service/src/com/android/car/hal/DiagnosticHalService.java
+++ b/service/src/com/android/car/hal/DiagnosticHalService.java
@@ -33,7 +33,10 @@
 import com.android.car.CarServiceUtils;
 import com.android.car.vehiclehal.VehiclePropValueBuilder;
 import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.BitSet;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArraySet;
@@ -120,15 +123,36 @@
         return mVehiclePropertyToConfig.get(halPropId, null);
     }
 
+    private List<Integer> getPropConfigArray(int halPropId) {
+        VehiclePropConfig propConfig = getPropConfig(halPropId);
+        return propConfig.configArray;
+    }
+
     private int getNumIntegerSensors(int halPropId) {
         int count = Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX + 1;
-        count = count + getPropConfig(halPropId).configArray.get(0);
+        List<Integer> configArray = getPropConfigArray(halPropId);
+        if(configArray.size() < 2) {
+            Log.e(CarLog.TAG_DIAGNOSTIC, String.format(
+                    "property 0x%x does not specify the number of vendor-specific properties." +
+                            "assuming 0.", halPropId));
+        }
+        else {
+            count += configArray.get(0);
+        }
         return count;
     }
 
     private int getNumFloatSensors(int halPropId) {
         int count = Obd2FloatSensorIndex.LAST_SYSTEM_INDEX + 1;
-        count = count + getPropConfig(halPropId).configArray.get(1);
+        List<Integer> configArray = getPropConfigArray(halPropId);
+        if(configArray.size() < 2) {
+            Log.e(CarLog.TAG_DIAGNOSTIC, String.format(
+                "property 0x%x does not specify the number of vendor-specific properties." +
+                    "assuming 0.", halPropId));
+        }
+        else {
+            count += configArray.get(1);
+        }
         return count;
     }