[systemd-devel] [PATCH] util: arg 'nbytes' of loop_read/write should be of type ssize_t

fykcee1 at gmail.com fykcee1 at gmail.com
Mon May 2 18:00:59 PDT 2011


Hi,

2011/5/3 Kay Sievers <kay.sievers at vrfy.org>
>
> On Mon, May 2, 2011 at 05:18, fykcee1 at gmail.com <fykcee1 at gmail.com> wrote:
> >  loop_read/write will try to fill/read 'nbytes' of caller supplying buffer.
> > This argument is currently of type size_t, which is always true
> > for loop quit condition "while (nbytes > 0)", hence we change it to
> > type ssize_t here.
>
> Where would that be useful? It's the size of the buffer supplied to
> the function, just like read() itself has.
Note "while(nbytes > 0)" is equal to "while(true)", if the supplying
buffer is smaller than contents of a file, read syscall may overwrite
memory after 'buf', or return with errno EFAULT.

>
> > This also helps to detect passed-in 'nbytes' of value -1
> > for example.
>
> Detect what that way, a negative sizeof()?
This 'nbytes' maybe a variable, and happens to be -1? Also, it is
symmetric if the range of return value(number of bytes read) is equal
to the range of 'nbytes'.




--
Regards,
- cee1


More information about the systemd-devel mailing list