]> git.saurik.com Git - apple/libc.git/blob - stdio/FreeBSD/vswprintf.c.patch
159d765d06bae8dffda69fa87484a53d17eab5a1
[apple/libc.git] / stdio / FreeBSD / vswprintf.c.patch
1 --- vswprintf.c.orig Tue May 20 15:22:44 2003
2 +++ vswprintf.c Wed Nov 12 00:30:05 2003
3 @@ -48,6 +48,7 @@
4 mbstate_t mbs;
5 char *mbp;
6 int ret, sverrno;
7 + size_t conv;
8
9 if (n == 0) {
10 errno = EINVAL;
11 @@ -78,13 +79,13 @@
12 * XXX Undo the conversion from wide characters to multibyte that
13 * fputwc() did in __vfwprintf().
14 */
15 - if (mbsrtowcs(s, (const char **)&mbp, n, &mbs) == (size_t)-1) {
16 + if ((conv = mbsrtowcs(s, (const char **)&mbp, n, &mbs)) == (size_t)-1) {
17 free(f._bf._base);
18 errno = EILSEQ;
19 return (-1);
20 }
21 free(f._bf._base);
22 - if (s[n - 1] != L'\0') {
23 + if (conv >= n) {
24 s[n - 1] = L'\0';
25 errno = EOVERFLOW;
26 return (-1);