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

Niklas Söderlund niklas.soderlund at ragnatech.se
Mon Jun 10 13:49:36 CEST 2019


The cam utility do not terminate correctly if invoked with only --help.
It prints the help information and then segfaults as the application is
not terminated correctly. Fix this by moving the return code check of
the option parsing to main().

Reported-by: Emmanuel Arias <eamanu at eamanu.com>
Suggested-by: Jacopo Mondi <jacopo at jmondi.org>
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;
-- 
2.21.0



More information about the libcamera-devel mailing list