[libcamera-devel] [PATCH] libcamera: camera: Ensure requests belong to the camera
Kieran Bingham
kieran.bingham at ideasonboard.com
Thu Mar 17 14:17:26 CET 2022
Requests are created by a Camera, and can only be queued
to that specific Camera. Enforce this during the public API
to prevent mis-use by incorrect applications.
Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
src/libcamera/camera.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index bb856d606f4a..dd6552e83eee 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -23,6 +23,7 @@
#include "libcamera/internal/camera_controls.h"
#include "libcamera/internal/formats.h"
#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/request.h"
/**
* \file libcamera/camera.h
@@ -1119,6 +1120,12 @@ int Camera::queueRequest(Request *request)
if (ret < 0)
return ret;
+ /* Requests can only be queued to the camera that created them.*/
+ if (request->_d()->camera() != this) {
+ LOG(Camera, Error) << "Request was not created by this camera";
+ return -EINVAL;
+ }
+
/*
* The camera state may change until the end of the function. No locking
* is however needed as PipelineHandler::queueRequest() will handle
--
2.32.0
More information about the libcamera-devel
mailing list