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

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Jun 10 16:27:14 CEST 2019


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


More information about the libcamera-devel mailing list