Re: the purpose of dynamic memory allocation

From: Jeffrey Hutzelman (jhutz+@cmu.edu)
Date: Tue Mar 10 1998 - 17:07:21 PST

  • Next message: Matt Nichols: "(no subject)"

    > Along the same lines, I've seen the following occur:
    >
    > 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
    size and signed-ness mismatches are a Good Thing, the above code
    suffers from the (IMHO) much worse problem of failing to check for
    an error return from recv....
    
    -- Jeffrey T. Hutzelman (N3NHS) <jhutz+@cmu.edu>
       Systems Programmer
       School of Computer Science - Research Computing Facility
       Carnegie Mellon University - Pittsburgh, PA
    



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