This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 10/29/2010 12:03 PM, David A. Ramos wrote: > Hi, > > It looks like the overflow condition in vsnprintf/snprintf is unnecessarily restrictive for 64-bit architectures. > > from libc/stdio/snprintf.c: > 52 if (size > INT_MAX) > 53 { > 54 ptr->_errno = EOVERFLOW; > 55 return EOF; > 56 } > > I believe it should use SIZE_MAX, rather than INT_MAX. It MUST be INT_MAX. That's because the return value is int, not size_t. Here's what POSIX has to say about it: http://www.opengroup.org/onlinepubs/9699919799/functions/snprintf.html The snprintf() function shall fail if: [EOVERFLOW] [CX] [Option Start] The value of n is greater than {INT_MAX} or the number of bytes needed to hold the output excluding the terminating null is greater than {INT_MAX}. [Option End] and as further amended by: http://austingroupbugs.net/view.php?id=316 Add the following [EOVERFLOW] error under the ERRORS section (in the Rebision) introduced by "In addition, all forms of fprintf( ) shall fail if:", [EOVERFLOW] [CX] The value to be returned is greater than {INT_MAX}. And then change the existing [EOVERFLOW] error for snprintf() to: [EOVERFLOW] [CX] The value of n is greater than {INT_MAX}. (Note the use of CX shading in both cases - in the revision the existing EOVERFLOW has changed from XSI to CX.) Then in XSH 2.3 Error Numbers add to the end of the existing paragraph 6 which says "The ERRORS section on each reference page specifies which error conditions shall be detected by all implementations (``shall fail'') and which may be optionally detected by an implementation (``may fail''). If no error condition is detected, the action requested shall be successful." (new text to add): If an error condition is detected, the action requested may have been partially performed, unless otherwise stated. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |