[libcamera-devel] [PATCH v2 10/24] libcamera: controls: Catch type mismatch in ControlInfoMap

Jacopo Mondi jacopo at jmondi.org
Fri Nov 15 17:21:29 CET 2019


Hi LAurent

On Fri, Nov 08, 2019 at 10:53:55PM +0200, Laurent Pinchart wrote:
> 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;
> +		}
> +

Should we just skip the control or actually abort the whole id map
generation ?

>  		idmap_[ctrl.first->id()] = ctrl.first;
> +	}
>  }
>
>  /**
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20191115/f1aad574/attachment.sig>


More information about the libcamera-devel mailing list