]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(print_it): Avoid buffer overrun that would occur
authorJim Meyering <jim@meyering.net>
Wed, 27 Aug 2003 08:55:01 +0000 (08:55 +0000)
committerJim Meyering <jim@meyering.net>
Wed, 27 Aug 2003 08:55:01 +0000 (08:55 +0000)
when the user-specified format string ends with `%'.

src/stat.c

index 0bcb1f19a4ed1398197cec0e561e044d3863a898..8b988165393d4046d4147caa3c95229f117f6490 100644 (file)
@@ -566,7 +566,6 @@ print_it (char const *masterformat, char const *filename,
 
   char *dest = xmalloc (strlen (format) + 1);
 
-
   b = format;
   while (b)
     {
@@ -583,9 +582,12 @@ print_it (char const *masterformat, char const *filename,
          dest[1 + len] = 0;
          p += len;
 
+         b = p + 1;
          switch (*p)
            {
            case '\0':
+             b = NULL;
+             /* fall through */
            case '%':
              putchar ('%');
              break;
@@ -593,7 +595,6 @@ print_it (char const *masterformat, char const *filename,
              print_func (dest, *p, filename, data);
              break;
            }
-         b = p + 1;
        }
       else
        {