]> git.ipfire.org Git - thirdparty/tar.git/commitdiff
Fix unlikely buffer overrun when checkpointing
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 3 Aug 2024 18:52:17 +0000 (11:52 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 4 Aug 2024 08:41:43 +0000 (01:41 -0700)
* src/checkpoint.c (format_checkpoint_string):
Don’t overrun buffer when word splitting.

src/checkpoint.c

index e9ca35233344a4d1357053dcbeda6c73e6b77b90..00079ec219e07f145eb5df6d96d08ced512e679a 100644 (file)
@@ -300,10 +300,13 @@ format_checkpoint_string (FILE *fp, size_t len,
                if (arg)
                  {
                    ws.ws_delim = ",";
-                   if (wordsplit (arg, &ws, WRDSF_NOVAR | WRDSF_NOCMD |
-                                          WRDSF_QUOTE | WRDSF_DELIM))
+                   if (wordsplit (arg, &ws,
+                                  (WRDSF_NOVAR | WRDSF_NOCMD
+                                   | WRDSF_QUOTE | WRDSF_DELIM)))
                      ERROR ((0, 0, _("cannot split string '%s': %s"),
                              arg, wordsplit_strerror (&ws)));
+                   else if (3 < ws.ws_wordc)
+                     ERROR ((0, 0, _("too many words in '%s'"), arg));
                    else
                      {
                        int i;