bug-bash
[Top][All Lists]
Advanced

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

Re: source(builtin) and read(2)


From: Eric Blake
Subject: Re: source(builtin) and read(2)
Date: Fri, 23 Mar 2007 15:08:01 -0600
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.10) Gecko/20070221 Thunderbird/1.5.0.10 Mnenhy/0.7.4.666

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

According to Matthew Woehlke on 3/23/2007 2:40 PM:
>>
>> SSIZE_MAX is guaranteed to be the maximum value that fits in ssize_t.
>> Again, if your ssize_t is smaller than 32 bits, your platform has other
>> issues.  Just because POSIX allows ssize_t to be as small as 16 bits
>> doesn't mean many modern platforms do that.
> 
> Hmm... well then I guess this is broken:
> /usr/include/limits.h:#define SSIZE_MAX        53248    /* max single
> I/O size, 52K       */

Which platform is this?  Yes, it is horribly broken; it's not even one
less than a power of two, which means it is an outright violation of this:
http://www.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html
{SSIZE_MAX}
    Maximum value of an object of type ssize_t.
    Minimum Acceptable Value: {_POSIX_SSIZE_MAX}

> 
> The man page here says:
> If the value of nbytes is greater than SSIZE_MAX,
> the read() function returns -1 and sets errno to
> [EINVAL].
> 
> ...and trust me, it ain't lying. This broke at least gawk and gzip, and
> even the Linux man page seems to strongly indicate that you should pay
> attention to SSIZE_MAX when calling read().

Except that usually SSIZE_MAX is one-half of SIZE_MAX, which is usually
the same size as pointers.  On Linux, it is relatively rare to try to read
more than 2 gigabytes in a single read() call.  You usually run into other
platform limitations before it is possible to exceed the SSIZE_MAX limitation.

- --
Don't work too hard, make some time for fun as well!

Eric Blake             ebb9@byu.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGBEGw84KuGfSFAYARAvJeAJ4tAWack3ds75zDKUIBtkDyOtdIqgCfV5Ng
tyZ470ICG5VhuiHotUpQI2g=
=y26D
-----END PGP SIGNATURE-----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]