Re: the purpose of dynamic memory allocation

From: Alan Cox (alanat_private)
Date: Wed Mar 11 1998 - 02:37:32 PST

  • Next message: Aleph One: "Solaris printd security vulnerability"

    > > while(bytes = recv(sock, buf, bufsize, 0))
    > >         write(fd, buf, bytes);
    > >
    > > Normally, recv fails with a 0, but if things go wrong, it will fail with a
    > > -1.  The third argument to write is UNSIGNED.  If that occurs, we'll start
    > > at the addr of buf, and attempt to write 4GB to the fd.  This is just one
    > > example of why I do not consider signed-unsigned mismatch warnings to be
    > > inconsequential.
    >
    > recv returns the number of bytes received, or -1 if there is an error.
    > The only way it can return 0 is if a 0-byte message is received
    > (e.g. a 0-length UDP packet).  While I'll agree that complaints about
    
    0 means EOF[1]. The code above is sound until it hits an error, whereopn unless
    you have 64bit files on a 32bit box it will loop harmlessly erroring the attempt
    to write 4Gig of data. Its wildly improbable on a 64bit fs aware box it would
    doing anything more that return "bad address" errors. But not checking for
    -1 is an error.
    
    [1] Who says you cant use recv on non datagram sockets, or on datagram protocols
    that support EOF
    
    Alan
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 13:44:49 PDT