From e5db81bb29544b1be6500ad4a4dec5b4002c9962 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aksel=20Sj=C3=B6gren?= <asjogren@itrsgroup.com>
Date: Tue, 29 Nov 2022 13:55:32 +0100
Subject: [PATCH] check_icmp: fix parsing help/version long options
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fix parsing of the long options --help and --version. The special
handling must be done before calling getopt().
This fixes erroneous output like:

    ./check_icmp --version
    ./check_icmp: invalid option -- '-'
    ./check_icmp: invalid option -- 'e'
    ./check_icmp: invalid option -- 'r'
    ./check_icmp: invalid option -- '-'
    ./check_icmp: invalid option -- 'e'
    ./check_icmp: invalid option -- 'r'

Signed-off-by: Aksel Sjögren <asjogren@itrsgroup.com>
---
 plugins-root/check_icmp.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c
index f8f153512..1f87b75f9 100644
--- a/plugins-root/check_icmp.c
+++ b/plugins-root/check_icmp.c
@@ -451,6 +451,14 @@ main(int argc, char **argv)
 		packets = 5;
 	}
 
+	/* support "--help" and "--version" */
+	if(argc == 2) {
+		if(!strcmp(argv[1], "--help"))
+			strcpy(argv[1], "-h");
+		if(!strcmp(argv[1], "--version"))
+			strcpy(argv[1], "-V");
+	}
+
 	/* Parse protocol arguments first */
 	for(i = 1; i < argc; i++) {
 		while((arg = getopt(argc, argv, opts_str)) != EOF) {
@@ -555,14 +563,6 @@ main(int argc, char **argv)
 	/* Parse extra opts if any */
 	argv=np_extra_opts(&argc, argv, progname);
 
-	/* support "--help" and "--version" */
-	if(argc == 2) {
-		if(!strcmp(argv[1], "--help"))
-			strcpy(argv[1], "-h");
-		if(!strcmp(argv[1], "--version"))
-			strcpy(argv[1], "-V");
-	}
-
 	argv = &argv[optind];
 	while(*argv) {
 		add_target(*argv);
