Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-7]: src/lib/libc/stdio Pull up following revision(s) (requested b...



details:   https://anonhg.NetBSD.org/src/rev/cb7cf9d0b77c
branches:  netbsd-7
changeset: 798385:cb7cf9d0b77c
user:      martin <martin%NetBSD.org@localhost>
date:      Tue Sep 30 18:21:40 2014 +0000

description:
Pull up following revision(s) (requested by christos in ticket #122):
        lib/libc/stdio/printf.3: revision 1.64
        lib/libc/stdio/vsnprintf.c: revision 1.28
        lib/libc/stdio/vsnprintf_ss.c: revision 1.13
Return EOVERFLOW like FreeBSD does if the buffer size exceeds INT_MAX
(well FreeBSD documents INT_MAX + 1, but in the code it is INT_MAX).

diffstat:

 lib/libc/stdio/printf.3       |  11 +++++++++--
 lib/libc/stdio/vsnprintf.c    |   8 ++++----
 lib/libc/stdio/vsnprintf_ss.c |   8 ++++----
 3 files changed, 17 insertions(+), 10 deletions(-)

diffs (90 lines):

diff -r 23b6aad2581a -r cb7cf9d0b77c lib/libc/stdio/printf.3
--- a/lib/libc/stdio/printf.3   Tue Sep 30 18:19:18 2014 +0000
+++ b/lib/libc/stdio/printf.3   Tue Sep 30 18:21:40 2014 +0000
@@ -1,4 +1,4 @@
-.\"    $NetBSD: printf.3,v 1.63 2013/05/04 19:17:38 wiz Exp $
+.\"    $NetBSD: printf.3,v 1.63.6.1 2014/09/30 18:21:40 martin Exp $
 .\"
 .\" Copyright (c) 1990, 1991, 1993
 .\"    The Regents of the University of California.  All rights reserved.
@@ -33,7 +33,7 @@
 .\"
 .\"     @(#)printf.3   8.1 (Berkeley) 6/4/93
 .\"
-.Dd May 4, 2013
+.Dd September 29, 2014
 .Dt PRINTF 3
 .Os
 .Sh NAME
@@ -799,6 +799,13 @@
 An invalid wide-character code was encountered.
 .It Bq Er ENOMEM
 Insufficient storage space is available.
+.It Bq Er EOVERFLOW
+The
+.Fa size
+argument exceeds
+.Dv INT_MAX ,
+or the return value would be too large to be represented by an
+.Vt int .
 .El
 .Sh SEE ALSO
 .Xr printf 1 ,
diff -r 23b6aad2581a -r cb7cf9d0b77c lib/libc/stdio/vsnprintf.c
--- a/lib/libc/stdio/vsnprintf.c        Tue Sep 30 18:19:18 2014 +0000
+++ b/lib/libc/stdio/vsnprintf.c        Tue Sep 30 18:21:40 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vsnprintf.c,v 1.27 2013/05/17 12:55:57 joerg Exp $     */
+/*     $NetBSD: vsnprintf.c,v 1.27.6.1 2014/09/30 18:21:40 martin Exp $        */
 
 /*-
  * Copyright (c) 1990, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)vsnprintf.c        8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: vsnprintf.c,v 1.27 2013/05/17 12:55:57 joerg Exp $");
+__RCSID("$NetBSD: vsnprintf.c,v 1.27.6.1 2014/09/30 18:21:40 martin Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -76,8 +76,8 @@
        _DIAGASSERT(n == 0 || str != NULL);
        _DIAGASSERT(fmt != NULL);
 
-       if ((int)n < 0) {
-               errno = EINVAL;
+       if (n > INT_MAX) {
+               errno = EOVERFLOW;
                return -1;
        }
 
diff -r 23b6aad2581a -r cb7cf9d0b77c lib/libc/stdio/vsnprintf_ss.c
--- a/lib/libc/stdio/vsnprintf_ss.c     Tue Sep 30 18:19:18 2014 +0000
+++ b/lib/libc/stdio/vsnprintf_ss.c     Tue Sep 30 18:21:40 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: vsnprintf_ss.c,v 1.12 2012/03/15 18:22:31 christos Exp $       */
+/*     $NetBSD: vsnprintf_ss.c,v 1.12.10.1 2014/09/30 18:21:40 martin Exp $    */
 
 /*-
  * Copyright (c) 1990, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)vsnprintf.c        8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: vsnprintf_ss.c,v 1.12 2012/03/15 18:22:31 christos Exp $");
+__RCSID("$NetBSD: vsnprintf_ss.c,v 1.12.10.1 2014/09/30 18:21:40 martin Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -144,8 +144,8 @@
        _DIAGASSERT(slen == 0 || sbuf != NULL);
        _DIAGASSERT(fmt0 != NULL);
 
-       if ((int)slen < 0) {
-               errno = EINVAL;
+       if (slen > INT_MAX) {
+               errno = EOVERFLOW;
                return -1;
        }
 



Home | Main Index | Thread Index | Old Index