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

Jacopo Mondi jacopo at jmondi.org
Mon Nov 18 23:55:08 CET 2019


Hi Laurent,

On Mon, Nov 18, 2019 at 03:01:33AM +0200, Laurent Pinchart wrote:
> Hi Jacopo,
>
> On Fri, Nov 15, 2019 at 05:21:29PM +0100, Jacopo Mondi wrote:
> > 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 ?
>
> As this is a serious error, I think we should abort it completely, in
> order to show that something went wrong. If you think we should just
> skip the control, we can discuss that.
>

No, it's fine.. If this happens there has been a problem during
development, is not something a user could trigger.. In this case it's
better to fail loudly

Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>

Thanks
   j

> > >  		idmap_[ctrl.first->id()] = ctrl.first;
> > > +	}
> > >  }
> > >
> > >  /**
>
> --
> Regards,
>
> Laurent Pinchart
-------------- 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/20191118/998e8897/attachment.sig>


More information about the libcamera-devel mailing list