Handle an invalid new frame request When HalCamera and VirtualCamera are synchronized based on the fences, it is possible that VirtualCamera sends a new frame request after a corresponding timeline/fence is destroyed. This change therefore add a logic to check the validity of the timeline associated with the requestor and, if it is not valid, returns an invalid fence to notify that a frame request is not queued. Fix: 169282240 Test: Run evs_halcamera_fuzzer and evs_virtualcamera_fuzzer Change-Id: I783454bcdca05f8f4d6b2b8eff118956d7155362 Merged-In: I783454bcdca05f8f4d6b2b8eff118956d7155362 (cherry picked from commit 0b188826a3f9584f2cfed02d3a73d834c8312a60) (cherry picked from commit a2163172e291093cba730f7113775442c8f8f244)
diff --git a/evs/manager/1.1/HalCamera.cpp b/evs/manager/1.1/HalCamera.cpp index 0f58d51..f4d2c49 100644 --- a/evs/manager/1.1/HalCamera.cpp +++ b/evs/manager/1.1/HalCamera.cpp
@@ -236,8 +236,9 @@ std::lock_guard<std::mutex> lock(mFrameMutex); - if (mStreamState != RUNNING) { - LOG(WARNING) << "This HalCamera is not streaming."; + if (mTimelines.find(id) == mTimelines.end()) { + // Timeline for this client either does not exist or is deleted. + LOG(ERROR) << "Timeline for this client does not exist."; return {}; }