Fix argument parsing
While parsing flags, the code was accessing the second element of argv[i] without checking that the length of argv[i] is greater than 1. Signed-off-by: Francois Berder <18538310+francois-berder@users.noreply.github.com>
diff --git a/src/main.c b/src/main.c
index 26de441..2d5051e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -58,7 +58,10 @@ int main(int argc, char * argv[]) {
for (int i = 1; i < argc; i++) {
if (argv[i][0] == '-' && !double_dash) {
- if (argv[i][1] == 'e') {
+ if (strlen(argv[i]) < 2) {
+ fprintf(stderr, "Invalid flag '%s'.\n", argv[i]);
+ return 1;
+ } else if (argv[i][1] == 'e') {
mode = 1;
} else if (argv[i][1] == 'd') {
mode = -1;
@@ -94,6 +97,9 @@ int main(int argc, char * argv[]) {
i++;
} else if (argv[i][1] == '-') {
double_dash = 1;
+ } else {
+ fprintf(stderr, "Invalid flag '%s'.\n", argv[i]);
+ return 1;
}
} else {
if (bz3_file != NULL && regular_file != NULL) {
