From bd8e19a58edef90f481ce0ec1509be783130e99d Mon Sep 17 00:00:00 2001 From: Kumar Harsh Date: Thu, 30 Mar 2017 14:12:12 +0530 Subject: [PATCH] Terminate the long_options array with an entry that is all zeros, to define end of parsing by getopt_long hence preventing segfault. Change-Id: I018e5af02e5842d25494b2d93412c8c37dd4b316 Closes-Bug:#1651153 --- utils/vrfstats.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/utils/vrfstats.c b/utils/vrfstats.c index 58a9be1d1..c9e2bf5d2 100644 --- a/utils/vrfstats.c +++ b/utils/vrfstats.c @@ -127,7 +127,7 @@ static struct option long_options[] = { [GET_OPT_INDEX] = {"get", required_argument, &get_set, 1}, [DUMP_OPT_INDEX] = {"dump", no_argument, &dump_set, 1}, [HELP_OPT_INDEX] = {"help", no_argument, &help_set, 1}, - [MAX_OPT_INDEX] = {"NULL", 0, 0, 0}, + [MAX_OPT_INDEX] = {NULL, 0, 0, 0}, }; static void @@ -152,8 +152,6 @@ parse_long_opts(int opt_index, char *opt_arg) switch (opt_index) { case GET_OPT_INDEX: vrf = strtol(opt_arg, NULL, 0); - if (errno) - Usage(); stats_op = SANDESH_OP_GET; break; @@ -162,11 +160,14 @@ parse_long_opts(int opt_index, char *opt_arg) stats_op = SANDESH_OP_DUMP; break; + case HELP_OPT_INDEX: default: + Usage(); break; } - + if (errno) + Usage(); return; } @@ -174,9 +175,7 @@ static void validate_options(void) { int options; - options = get_set + dump_set + help_set; - if (!options) Usage(); @@ -191,7 +190,6 @@ main(int argc, char *argv[]) { char opt; int ret, option_index; - while (((opt = getopt_long(argc, argv, "", long_options, &option_index)) >= 0)) { switch (opt) {