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)
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 {};
}