freebsd-nq/lib/libc
Colin Percival c6a96a8441 Give a less silly response to a silly request.
Prior to this commit, fread/fwrite calls with size * nmemb > SIZE_MAX
were handled by reading or writing (size_t)(size * nmemb) bytes; for
example, on 32-bit platforms, fread(ptr, 641, 6700417, f) would read 1
byte and indicate that the requested 6700417 blocks had been read.

This commit adds a check for such integer overflows, and treats them as
if an overly large request was passed to read/write; i.e., it sets errno
to EINVAL, sets the error indicator on the file, and returns a short
object count (0, to be specific).

The overflow check involves an integer division, so as a performance
optimization we check first to see if both size and nmemb are less than
2^16; if they are, no overflow is possible and we avoid the division.
We assume here that size_t is at least 32 bits; this appears to be true
on all platforms FreeBSD supports.

Although this commit fixes an integer overflow, it is not likely to have
any security implications, since any program which would be affected by
this bug fix is quite clearly already very confused.

Reviewed by:	kib
MFC after:	1 month
2010-01-10 14:30:30 +00:00
..
amd64 Mark uname(), getdomainname() and setdomainname() with COMPAT_FREEBSD4. 2008-11-09 10:45:13 +00:00
arm Remove unneeded stdlib directories. 2009-06-23 14:11:41 +00:00
compat-43 Implement sighold, sigignore, sigpause, sigrelse, sigset functions 2009-11-26 13:49:37 +00:00
db Consider flag == 0 as the same of flag == R_NEXT. This change will restore 2009-08-24 23:44:07 +00:00
gdtoa Unbreak the build for arm and powerpc. 2008-04-12 14:53:52 +00:00
gen Update manual for sem_init and sem_open, restrictions of shared semaphore 2010-01-09 05:40:46 +00:00
gmon Fix many "function declaration isn't a prototype" warnings in libc. 2009-12-05 19:31:38 +00:00
i386 Remove hand-written labs/abs implementations. GCC is smart enough. 2009-06-23 09:04:59 +00:00
ia64 Remove unneeded stdlib directories. 2009-06-23 14:11:41 +00:00
include Use umtx to implement process sharable semaphore, to make this work, 2010-01-05 02:37:59 +00:00
inet Merge the resolver part of BIND 9.4.3 into HEAD. 2008-12-14 19:39:53 +00:00
isc
locale Fix grammar. 2009-11-16 14:33:31 +00:00
mips Merge r195030 from project/mips to head by hand 2010-01-09 00:01:35 +00:00
nameser This commit was generated by cvs2svn to compensate for changes in r174223, 2007-12-03 15:07:58 +00:00
net - correct xref sections 2009-11-28 11:27:37 +00:00
nls - Update the Spanish NLS catalog 2009-12-03 19:27:12 +00:00
posix1e Don't forget to clean up the file copied from the kernel sources. 2010-01-02 20:27:14 +00:00
powerpc Mark uname(), getdomainname() and setdomainname() with COMPAT_FREEBSD4. 2008-11-09 10:45:13 +00:00
quad
regex Fix an off-by-one error in the marking of the O_CH operator 2009-09-16 06:32:23 +00:00
resolv Add an option to enforce strict RFC 1034 compliance. 2009-05-29 07:34:54 +00:00
rpc Use the correct types to store uids and gids in the credential cache. 2010-01-09 23:36:51 +00:00
softfloat Reflect license change from NetBSD. 2009-03-10 21:13:26 +00:00
sparc64 Remove unneeded stdlib directories. 2009-06-23 14:11:41 +00:00
stdio Give a less silly response to a silly request. 2010-01-10 14:30:30 +00:00
stdlib Simplify arena_run_reg_dalloc(), and remove a bug that was due to incorrect 2009-12-10 02:51:40 +00:00
stdtime Use _pthread_once() rather than _once() for localtime() and gmtime(). These 2010-01-06 20:43:40 +00:00
string Add a missing word to a sentence in the return values section. 2009-12-04 09:20:20 +00:00
sys Add a set of manual pages for pthread[_attr]_[sg]etaffinity(3). 2010-01-09 12:31:11 +00:00
uuid Move uuid_enc_le, uuid_dec_le, uuid_enc_be and uuid_dec_be symbols 2008-09-19 15:52:56 +00:00
xdr Implement support for RPCSEC_GSS authentication to both the NFS client 2008-11-03 10:38:00 +00:00
yp Eliminate more dead stores. 2009-11-25 04:45:45 +00:00
Makefile Merge r195030 from project/mips to head by hand 2010-01-09 00:01:35 +00:00
Versions.def Bump our namespace version for 9.0. 2009-09-13 13:15:36 +00:00