* stdio-common/test-vfprintf.c (main): Add test for large

precision.
This commit is contained in:
Ulrich Drepper 2007-05-01 18:35:44 +00:00
parent c01c245517
commit 1cb04337f2
2 changed files with 7 additions and 3 deletions

View File

@ -3,6 +3,8 @@
[BZ #4438]
* stdio-common/vfprintf.c (process_string_arg): Don't overflow the
stack for large precisions.
* stdio-common/test-vfprintf.c (main): Add test for large
precision.
2007-04-30 Jakub Jelinek <jakub@redhat.com>

View File

@ -1,5 +1,5 @@
/* Tests of *printf for very large strings.
Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
Copyright (C) 2000, 2002, 2003, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
@ -94,6 +94,7 @@ main (void)
fprintf (fp, "%.*s", 30000, large);
large[20000] = '\0';
fprintf (fp, large);
fprintf (fp, "%-1.300000000s", "hello");
if (fflush (fp) != 0 || ferror (fp) != 0 || fclose (fp) != 0)
{
@ -108,11 +109,12 @@ main (void)
setlocale (LC_ALL, NULL));
exit (1);
}
else if (st.st_size != 99999)
else if (st.st_size != 50000 + 30000 + 19999 + 5)
{
printf ("file size incorrect for locale %s: %jd instead of %jd\n",
setlocale (LC_ALL, NULL),
(intmax_t) st.st_size, (intmax_t) 99999);
(intmax_t) st.st_size,
(intmax_t) 50000 + 30000 + 19999 + 5);
res = 1;
}
else