app/regex: fix crash in options parsing
authorOphir Munk <ophirmu@nvidia.com>
Sun, 18 Oct 2020 14:21:47 +0000 (14:21 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 19 Oct 2020 22:05:54 +0000 (00:05 +0200)
getopt_long() parses command-line arguments. One of its arguments
'longopts' is a pointer to the first element of an array of struct
option.  The last element of the array has to be filled with zeros
to mark the end of options. For example:

struct option longopts[] = {
{ "help",  0, 0, ARG_HELP},
....
/* End of options */
{ 0, 0, 0, 0 }
};

This commit adds the last element. Prior to this commit getopt_long()
continued parsing beyond the longopts[] array which occasionally caused
segmentation faults.

Fixes: de06137cb295 ("app/regex: add RegEx test application")
Cc: stable@dpdk.org
Signed-off-by: Ophir Munk <ophirmu@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
app/test-regex/main.c

index 0d35f45..e6080b4 100644 (file)
@@ -66,7 +66,9 @@ args_parse(int argc, char **argv, char *rules_file, char *data_file,
                /* Perf test only */
                { "perf", 0, 0, ARG_PERF_MODE},
                /* Number of iterations to run with perf test */
-               { "nb_iter", 1, 0, ARG_NUM_OF_ITERATIONS}
+               { "nb_iter", 1, 0, ARG_NUM_OF_ITERATIONS},
+               /* End of options */
+               { 0, 0, 0, 0 }
        };
 
        argvopt = argv;