Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src (getdelim.c:1.1)
On Tuesday 2009-07-14 16:46 +0100, Roy Marples output:
:- newlen = off + len + 1;
:- /* Ensure that the resultant buffer length fits in ssize_t */
:- if (newlen > (size_t)SSIZE_MAX + 1) {
:+ newlen = off + len;
:+ /* Ensure that the resultant buffer length fits in ssize_t. */
:+ if (newlen > SSIZE_MAX) {
I may have explained this poorly. "newlen", "off" and "len" are
signed numbers. If the addition "off + len" overflows ssize_t (also signed),
then "newlen" is now negative and will never be greater than SSIZE_MAX. Yes?
Of course, since the comparison is with SSIZE_MAX (as the maximum of the
signed numbers in that comparison) nothing is greater than it. Or my
understanding is really wonky. Ah well, it is 2 a.m. here.
Regards,
Geoff
Home |
Main Index |
Thread Index |
Old Index