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

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Jun 10 14:14:25 CEST 2019


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>
> ---
>  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
--
Kieran


More information about the libcamera-devel mailing list