Fix the crash of deallocate caused by delete array error on storeInjectionConfig()

Root cause: Because mInjectionConfig is plain old data, it's not get
initialized to 0. In this case, if we use the delete[] method to
delete mInjectionConfig.streams, a deallocation crash may occur.

Solution: A new vector member variable is added to store the stream
of the internal camera, replacing the original new/delete[] method
for storing the stream to avoid another deallocation crash caused by
uninitialized mInjectionConfig.

Bug: 194700088
Test: Manual
Change-Id: Ic3d825fce7b6fefea65e7ce27072ed32f275d4bb
diff --git a/services/camera/libcameraservice/device3/Camera3DeviceInjectionMethods.cpp b/services/camera/libcameraservice/device3/Camera3DeviceInjectionMethods.cpp
index 7026934..4744a6d 100644
--- a/services/camera/libcameraservice/device3/Camera3DeviceInjectionMethods.cpp
+++ b/services/camera/libcameraservice/device3/Camera3DeviceInjectionMethods.cpp
@@ -193,11 +193,6 @@
 
 status_t Camera3Device::Camera3DeviceInjectionMethods::stopInjection() {
     status_t res = NO_ERROR;
-    mIsStreamConfigCompleteButNotInjected = false;
-    if (mInjectionConfig.streams != nullptr) {
-        delete [] mInjectionConfig.streams;
-        mInjectionConfig.streams = nullptr;
-    }
 
     sp<Camera3Device> parent = mParent.promote();
     if (parent == nullptr) {
@@ -269,16 +264,12 @@
         const camera3::camera_stream_configuration& injectionConfig,
         const std::vector<uint32_t>& injectionBufferSizes) {
     mIsStreamConfigCompleteButNotInjected = true;
-    if (mInjectionConfig.streams != nullptr) {
-        delete [] mInjectionConfig.streams;
-        mInjectionConfig.streams = nullptr;
-    }
     mInjectionConfig = injectionConfig;
-    mInjectionConfig.streams =
-        (android::camera3::camera_stream_t **) new camera_stream_t*[injectionConfig.num_streams];
+    mInjectionStreams.clear();
     for (size_t i = 0; i < injectionConfig.num_streams; i++) {
-        mInjectionConfig.streams[i] = injectionConfig.streams[i];
+        mInjectionStreams.push_back(injectionConfig.streams[i]);
     }
+    mInjectionConfig.streams = mInjectionStreams.editArray();
     mInjectionBufferSizes = injectionBufferSizes;
 }
 
@@ -359,6 +350,9 @@
 void Camera3Device::Camera3DeviceInjectionMethods::injectionDisconnectImpl() {
     ATRACE_CALL();
     ALOGI("%s: Injection camera disconnect", __FUNCTION__);
+    mIsStreamConfigCompleteButNotInjected = false;
+    mInjectionStreams.clear();
+    mInjectionConfig.streams = nullptr;
 
     mBackupHalInterface = nullptr;
     HalInterface* interface = nullptr;