[libcamera-devel] [PATCH] cam: Fix cam --help crash

Niklas Söderlund niklas.soderlund at ragnatech.se
Mon Jun 10 23:08:39 CEST 2019


Hi,

Thanks for reviewing this, I have pushed this to master with Kieran's 
spelling improvements to the commit message.

On 2019-06-10 17:27:14 +0300, Laurent Pinchart wrote:
> Hello,
> 
> On Mon, Jun 10, 2019 at 01:14:25PM +0100, Kieran Bingham wrote:
> > Hi Niklas,
> > 
> > Thanks for picking this up.
> > 
> > On 10/06/2019 12:49, Niklas Söderlund wrote:
> > > The cam utility do not terminate correctly if invoked with only --help.
> > 
> > 'does not'
> > 
> > > It prints the help information and then segfaults as the application is
> > > not terminated correctly. Fix this by moving the return code check of
> > 
> > "segfaults due to the application incorrectly handling the return value." ?
> > 
> > > the option parsing to main().
> > > 
> > > Reported-by: Emmanuel Arias <eamanu at eamanu.com>
> > > Suggested-by: Jacopo Mondi <jacopo at jmondi.org>
> > 
> > Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> > 
> > > Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> 
> > > ---
> > >  src/cam/main.cpp | 8 +++++---
> > >  1 file changed, 5 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/src/cam/main.cpp b/src/cam/main.cpp
> > > index dbf04917bcc5aa38..f03a9faf87fac865 100644
> > > --- a/src/cam/main.cpp
> > > +++ b/src/cam/main.cpp
> > > @@ -61,7 +61,7 @@ int CamApp::init(int argc, char **argv)
> > >  
> > >  	ret = parseOptions(argc, argv);
> > >  	if (ret < 0)
> > > -		return ret == -EINTR ? 0 : ret;
> > > +		return ret;
> > >  
> > >  	cm_ = CameraManager::instance();
> > >  
> > > @@ -193,9 +193,11 @@ void signalHandler(int signal)
> > >  int main(int argc, char **argv)
> > >  {
> > >  	CamApp app;
> > > +	int ret;
> > >  
> > > -	if (app.init(argc, argv))
> > > -		return EXIT_FAILURE;
> > > +	ret = app.init(argc, argv);
> > > +	if (ret)
> > > +		return ret == -EINTR ? 0 : EXIT_FAILURE;
> > >  
> > >  	struct sigaction sa = {};
> > >  	sa.sa_handler = &signalHandler;
> 
> -- 
> Regards,
> 
> Laurent Pinchart

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list