|
Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com |
Re: the purpose of dynamic memory allocation
Alan Cox (alan
LXORGUK.UKUU.ORG.UK)Wed, 11 Mar 1998 10:37:32 +0000
- Messages sorted by: [ date ][ thread ][ subject ][ author ]
- Next message: Suman_Saraf: "Security problem in Slackware."
- Previous message: Aleph One: "MDaemon SMTP Server Buffer Overflow's"
- In reply to: Jeffrey Hutzelman: "Re: the purpose of dynamic memory allocation"
> > 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
- Next message: Suman_Saraf: "Security problem in Slackware."
- Previous message: Aleph One: "MDaemon SMTP Server Buffer Overflow's"
- In reply to: Jeffrey Hutzelman: "Re: the purpose of dynamic memory allocation"