]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.0857: xxd: --- is incorrectly recognized as end-of-options v9.1.0857
authorDungSaga <dungsaga@users.noreply.github.com>
Mon, 11 Nov 2024 21:19:50 +0000 (22:19 +0100)
committerChristian Brabandt <cb@256bit.org>
Mon, 11 Nov 2024 21:19:50 +0000 (22:19 +0100)
Problem:  xxd: --- is incorrectly recognized as end-of-options
Solution: improve xxds end-of-option parser (DungSaga)

closes: #9285

Signed-off-by: DungSaga <dungsaga@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/testdir/test_xxd.vim
src/version.c
src/xxd/xxd.c

index f10c2447dbb0c5a5da12fd6a232d074e30379b89..690c8daf7d2220a757bf36ce8b52490e218c5dc2 100644 (file)
@@ -356,7 +356,7 @@ endfunc
 
 " Various ways with wrong arguments that trigger the usage output.
 func Test_xxd_usage()
-  for arg in ['-h', '-c', '-g', '-o', '-s', '-l', '-X', '-R', 'one two three']
+  for arg in ['-h', '-c', '-g', '-o', '-s', '-l', '-X', '-R', 'one two three', '----', '---']
     new
     exe 'r! ' . s:xxd_cmd . ' ' . arg
     call assert_match("Usage:", join(getline(1, 3)))
@@ -364,6 +364,13 @@ func Test_xxd_usage()
   endfor
 endfunc
 
+func Test_xxd_end_of_options()
+  new
+  exe 'r! ' . s:xxd_cmd . ' -- random-file-' . rand()
+  call assert_match('random-file-.*: No such file or directory', join(getline(1, 3)))
+  bwipe!
+endfunc
+
 func Test_xxd_ignore_garbage()
   new
   exe 'r! printf "\n\r xxxx 0: 42 42" | ' . s:xxd_cmd . ' -r'
index 4f66b3de2407fa1ae2e1610398ac13f91677d6d8..5c775b030415efeb05679aadc6f38c0e9991701a 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    857,
 /**/
     856,
 /**/
index b1050e9da4da33622bc8a3f9aa8dbf3575d7a50d..c222885455f12d145b30efb8b7f63d42df8fbf1d 100644 (file)
@@ -65,6 +65,7 @@
  * 10.05.2024  fix another buffer-overflow when writing colored output to buffer, #14738
  * 10.09.2024  Support -b and -i together, #15661
  * 19.10.2024  -e did add an extra space #15899
+ * 11.11.2024  improve end-of-options argument parser #9285
  *
  * (c) 1990-1998 by Juergen Weigert (jnweiger@gmail.com)
  *
@@ -145,7 +146,7 @@ extern void perror __P((char *));
 # endif
 #endif
 
-char version[] = "xxd 2024-10-19 by Juergen Weigert et al.";
+char version[] = "xxd 2024-11-11 by Juergen Weigert et al.";
 #ifdef WIN32
 char osver[] = " (Win32)";
 #else
@@ -843,7 +844,7 @@ main(int argc, char *argv[])
          else
            exit_with_usage();
         }
-      else if (!strcmp(pp, "--"))      /* end of options */
+      else if (!strcmp(argv[1], "--")) /* end of options */
        {
          argv++;
          argc--;