[libcamera-devel] [PATCH v2 10/24] libcamera: controls: Catch type mismatch in ControlInfoMap
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Nov 8 21:53:55 CET 2019
ControlInfoMap requires the ControlId and ControlRange of each entry to
have identical types. Check for this and log an error if a mismatch is
detected.
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
src/libcamera/controls.cpp | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp
index eae0250a92e3..c488b2e4eb3f 100644
--- a/src/libcamera/controls.cpp
+++ b/src/libcamera/controls.cpp
@@ -571,8 +571,19 @@ ControlInfoMap::const_iterator ControlInfoMap::find(unsigned int id) const
void ControlInfoMap::generateIdmap()
{
idmap_.clear();
- for (const auto &ctrl : *this)
+
+ for (const auto &ctrl : *this) {
+ if (ctrl.first->type() != ctrl.second.min().type()) {
+ LOG(Controls, Error)
+ << "Control " << utils::hex(ctrl.first->id())
+ << " type and range type mismatch";
+ idmap_.clear();
+ clear();
+ return;
+ }
+
idmap_[ctrl.first->id()] = ctrl.first;
+ }
}
/**
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list