camera_service_fuzzer: Bug Fix

Resolved Null Pointer Dereference

Test: ./camera_service_fuzzer clusterfuzz-testcase-minimized-camera_service_fuzzer-5154728196833280
Bug: 232984975

Change-Id: Ie5a0bc1bd2cd3ffae95cc6b07b03439809350a07
diff --git a/services/camera/libcameraservice/libcameraservice_fuzzer/camera_service_fuzzer.cpp b/services/camera/libcameraservice/libcameraservice_fuzzer/camera_service_fuzzer.cpp
index 7a61f38..71c26ea 100644
--- a/services/camera/libcameraservice/libcameraservice_fuzzer/camera_service_fuzzer.cpp
+++ b/services/camera/libcameraservice/libcameraservice_fuzzer/camera_service_fuzzer.cpp
@@ -392,14 +392,16 @@
                 String8("Test Surface"), previewWidth, previewHeight,
                 CameraParameters::previewFormatToEnum(params.getPreviewFormat()), layerMetaData);
 
-        if (surfaceControl.get() != nullptr) {
+        if (surfaceControl.get()) {
             SurfaceComposerClient::Transaction{}
                     .setLayer(surfaceControl, 0x7fffffff)
                     .show(surfaceControl)
                     .apply();
 
             previewSurface = surfaceControl->getSurface();
-            cameraDevice->setPreviewTarget(previewSurface->getIGraphicBufferProducer());
+            if (previewSurface.get()) {
+                cameraDevice->setPreviewTarget(previewSurface->getIGraphicBufferProducer());
+            }
         }
         cameraDevice->setPreviewCallbackFlag(CAMERA_FRAME_CALLBACK_FLAG_CAMCORDER);
 
@@ -442,7 +444,20 @@
             waitForPreviewStart();
             cameraDevice->setVideoBufferMode(
                     android::hardware::BnCamera::VIDEO_BUFFER_MODE_BUFFER_QUEUE);
-            cameraDevice->setVideoTarget(previewSurface->getIGraphicBufferProducer());
+            sp<SurfaceControl> surfaceControlVideo = mComposerClient->createSurface(
+                    String8("Test Surface Video"), previewWidth, previewHeight,
+                    CameraParameters::previewFormatToEnum(params.getPreviewFormat()),
+                    layerMetaData);
+            if (surfaceControlVideo.get()) {
+                SurfaceComposerClient::Transaction{}
+                        .setLayer(surfaceControlVideo, 0x7fffffff)
+                        .show(surfaceControlVideo)
+                        .apply();
+                sp<Surface> previewSurfaceVideo = surfaceControlVideo->getSurface();
+                if (previewSurfaceVideo.get()) {
+                    cameraDevice->setVideoTarget(previewSurfaceVideo->getIGraphicBufferProducer());
+                }
+            }
             cameraDevice->stopPreview();
             cameraDevice->startRecording();
             waitForEvent(mRecordingLock, mRecordingCondition, mRecordingNotification);