2012-03-02 Kees Cook <keescook@chromium.org>

* stdio-common/vfprintf.c (vfprintf): add missing errno settings.
This commit is contained in:
Kees Cook 2012-03-05 10:18:17 +01:00 committed by Andreas Jaeger
parent 7c1f4834d3
commit fa0355175d
2 changed files with 9 additions and 3 deletions

View File

@ -1,5 +1,7 @@
2012-03-02 Kees Cook <keescook@chromium.org>
* stdio-common/vfprintf.c (vfprintf): add missing errno settings.
[BZ #13656]
* stdio-common/vfprintf.c (vfprintf): Check for nargs overflow and
possibly allocate from heap instead of stack.

View File

@ -822,7 +822,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
\
if (function_done < 0) \
{ \
/* Error in print handler. */ \
/* Error in print handler; up to handler to set errno. */ \
done = -1; \
goto all_done; \
} \
@ -876,7 +876,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
\
if (function_done < 0) \
{ \
/* Error in print handler. */ \
/* Error in print handler; up to handler to set errno. */ \
done = -1; \
goto all_done; \
} \
@ -1117,7 +1117,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
&mbstate); \
if (len == (size_t) -1) \
{ \
/* Something went wron gduring the conversion. Bail out. */ \
/* Something went wrong during the conversion. Bail out. */ \
done = -1; \
goto all_done; \
} \
@ -1188,6 +1188,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
if (__mbsnrtowcs (ignore, &str2, strend - str2, \
ignore_size, &ps) == (size_t) -1) \
{ \
/* Conversion function has set errno. */ \
done = -1; \
goto all_done; \
} \
@ -1605,6 +1606,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
if (spec == L_('\0'))
{
/* The format string ended before the specifier is complete. */
__set_errno (EINVAL);
done = -1;
goto all_done;
}
@ -1948,6 +1950,7 @@ do_positional:
about # of chars. */
if (function_done < 0)
{
/* Function has set errno. */
done = -1;
goto all_done;
}
@ -1982,6 +1985,7 @@ do_positional:
of chars. */
if (function_done < 0)
{
/* Function has set errno. */
done = -1;
goto all_done;
}