libcamera: camera: Check requests before queueing them
Make sure all requests queued to a camera only contain streams which have been configured and belong to the camera. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
@@ -732,6 +732,7 @@ Request *Camera::createRequest()
|
||||
* \return 0 on success or a negative error code otherwise
|
||||
* \retval -ENODEV The camera has been disconnected from the system
|
||||
* \retval -EACCES The camera is not running so requests can't be queued
|
||||
* \retval -EINVAL The request is invalid
|
||||
*/
|
||||
int Camera::queueRequest(Request *request)
|
||||
{
|
||||
@@ -741,6 +742,14 @@ int Camera::queueRequest(Request *request)
|
||||
if (!stateIs(CameraRunning))
|
||||
return -EACCES;
|
||||
|
||||
for (auto const &it : request->buffers()) {
|
||||
Stream *stream = it.first;
|
||||
if (activeStreams_.find(stream) == activeStreams_.end()) {
|
||||
LOG(Camera, Error) << "Invalid request";
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
int ret = request->prepare();
|
||||
if (ret) {
|
||||
LOG(Camera, Error) << "Failed to prepare request";
|
||||
|
||||
Reference in New Issue
Block a user