]> git.ipfire.org Git - thirdparty/tar.git/commitdiff
Avoid unlikely verbose_option overflow
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 2 Nov 2024 06:18:30 +0000 (23:18 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 2 Nov 2024 06:47:23 +0000 (23:47 -0700)
* src/tar.c (parse_opt, decode_options):
Avoid undefined behavior if verbose_option overflows.

src/tar.c

index 3a4421e9389fb0ed4311ccb1e8bcc4cfc6f5003b..66486fcf4276944dd54b1f70e4946c9fa01d647c 100644 (file)
--- a/src/tar.c
+++ b/src/tar.c
@@ -1797,7 +1797,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
 
     case 't':
       set_subcommand_option (LIST_SUBCOMMAND);
-      verbose_option++;
+      verbose_option += verbose_option <= 2;
       break;
 
     case TEST_LABEL_OPTION:
@@ -1825,7 +1825,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
       break;
 
     case 'v':
-      verbose_option++;
+      verbose_option += verbose_option <= 2;
       warning_option |= WARN_VERBOSE_WARNINGS;
       break;
 
@@ -2710,7 +2710,7 @@ decode_options (int argc, char **argv)
       /* --test-label is silent if the user has specified the label name to
         compare against. */
       if (!name_more_files ())
-       verbose_option++;
+       verbose_option += verbose_option <= 2;
     }
   else if (utc_option)
     verbose_option = 2;