:: commit b9396ddab33c0f6c7fc7be358e9b5ee1ff46602e

Francois Berder <18538310+francois-berder@users.noreply.github.com> — 2022-05-11 15:33

parents: 30c2cb1b2c

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) {
tab: 248 wrap: offon