:Well, since a server specifies the maximum file size it can :handle, it seems good form to check for that in the client. :(Although I'd agree that a server shouldn't crash if a read/write : that goes beyond that limit.) : :Also, as Matt notes, off_t is signed. As such, it looks to me like :the check could mess up if uio_offset it right near 0x7fffffffffffffff, :so that uio->ui_offset + uio->uio_resid ends up negative. I think the :check a little above that for uio_offset < 0 should also check :uio_offset + uio_resid < 0 to avoid this. : :rick
Yes, though doing an overflow check in C, at least with newer versions of GCC, requires a separate comparison. The language has been mangled pretty badly over the years. if (a + b < a) -> can be optimized-out by the compiler if (a + b < 0) -> also can be optimized-out by the compiler x = a + b; if (x < a) -> this is ok (best method) x = a + b; if (x < 0) -> this is ok This sort of check may already be made in various places (e.g. by UFS and/or uio), since negative offsets are used to identify meta-data in UFS. -Matt Matthew Dillon <dil...@backplane.com> _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"