2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-09-04 08:15:37 +00:00

crtools: Sanitize options parsing

Do not presume that the argv[1] is action. Use the optind index at the end
of parsing instead. This allows to specify --help option properly.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
Pavel Emelyanov
2012-07-19 16:50:04 +04:00
parent af3b2869b3
commit dd16fec48c

View File

@@ -54,7 +54,6 @@ int main(int argc, char *argv[])
pid_t pid = 0; pid_t pid = 0;
int ret = -1; int ret = -1;
int opt, idx; int opt, idx;
int action = -1;
int log_inited = 0; int log_inited = 0;
int log_level = 0; int log_level = 0;
@@ -65,8 +64,6 @@ int main(int argc, char *argv[])
if (argc < 2) if (argc < 2)
goto usage; goto usage;
action = argv[1][0];
/* Default options */ /* Default options */
opts.final_state = TASK_DEAD; opts.final_state = TASK_DEAD;
@@ -89,7 +86,7 @@ int main(int argc, char *argv[])
{ }, { },
}; };
opt = getopt_long(argc - 1, argv + 1, short_opts, long_opts, &idx); opt = getopt_long(argc, argv, short_opts, long_opts, &idx);
if (opt == -1) if (opt == -1)
break; break;
@@ -187,15 +184,15 @@ int main(int argc, char *argv[])
return -1; return -1;
} }
if (strcmp(argv[1], "dump") && if (strcmp(argv[optind], "dump") &&
strcmp(argv[1], "restore") && strcmp(argv[optind], "restore") &&
strcmp(argv[1], "show") && strcmp(argv[optind], "show") &&
strcmp(argv[1], "check")) { strcmp(argv[optind], "check")) {
pr_err("Unknown command"); pr_err("Unknown command %s", argv[optind]);
goto usage; goto usage;
} }
switch (action) { switch (argv[optind][0]) {
case 'd': case 'd':
if (!pid) if (!pid)
goto opt_pid_missing; goto opt_pid_missing;
@@ -263,6 +260,9 @@ usage:
pr_msg(" -D|--images-dir directory where to get images from\n"); pr_msg(" -D|--images-dir directory where to get images from\n");
pr_msg(" -c|--contents show contents of pages dumped in hexdump format\n"); pr_msg(" -c|--contents show contents of pages dumped in hexdump format\n");
pr_msg("\nOther options:\n");
pr_msg(" -h|--help show this text\n");
return -1; return -1;
opt_pid_missing: opt_pid_missing: