svn commit: r234635 - stable/9/lib/libc/stdio

David Schultz das at FreeBSD.org
Tue Apr 24 03:59:22 UTC 2012


Author: das
Date: Tue Apr 24 03:59:21 2012
New Revision: 234635
URL: http://svn.freebsd.org/changeset/base/234635

Log:
  MFC r234529:
    Ensure that the {,v}swprintf functions always null-terminate the
    output string, even if an encoding error or malloc failure occurs.

Modified:
  stable/9/lib/libc/stdio/vswprintf.c
Directory Properties:
  stable/9/lib/libc/   (props changed)

Modified: stable/9/lib/libc/stdio/vswprintf.c
==============================================================================
--- stable/9/lib/libc/stdio/vswprintf.c	Tue Apr 24 03:59:18 2012	(r234634)
+++ stable/9/lib/libc/stdio/vswprintf.c	Tue Apr 24 03:59:21 2012	(r234635)
@@ -59,6 +59,7 @@ vswprintf(wchar_t * __restrict s, size_t
 	f._bf._base = f._p = (unsigned char *)malloc(128);
 	if (f._bf._base == NULL) {
 		errno = ENOMEM;
+		*s = L'\0';
 		return (-1);
 	}
 	f._bf._size = f._w = 127;		/* Leave room for the NUL */
@@ -67,6 +68,7 @@ vswprintf(wchar_t * __restrict s, size_t
 		sverrno = errno;
 		free(f._bf._base);
 		errno = sverrno;
+		*s = L'\0';
 		return (-1);
 	}
 	*f._p = '\0';
@@ -80,6 +82,7 @@ vswprintf(wchar_t * __restrict s, size_t
 	free(f._bf._base);
 	if (nwc == (size_t)-1) {
 		errno = EILSEQ;
+		*s = L'\0';
 		return (-1);
 	}
 	if (nwc == n) {


More information about the svn-src-all mailing list