]> granicus.if.org Git - php/commitdiff
Fix for bugs #16148, #11199, #10092:
authorWez Furlong <wez@php.net>
Mon, 18 Mar 2002 19:42:19 +0000 (19:42 +0000)
committerWez Furlong <wez@php.net>
Mon, 18 Mar 2002 19:42:19 +0000 (19:42 +0000)
fread from socket will never free memory.
This patch should also be applied to php_sockread_internal in
fsock.c in the 4.2 branch.

main/network.c

index e5bbbca57ba5a12f0fe0ade3f2d35da4f62bfdc4..d8a69ebd67bdc8a752fa5bf0d37cebf57860908f 100644 (file)
@@ -633,6 +633,14 @@ static size_t php_sock_stream_read_internal(php_stream *stream, php_netstream_da
 #endif
        nr_bytes = recv(sock->socket, buf, sock->chunk_size, 0);
        if(nr_bytes > 0) {
+
+               /* try to avoid ever expanding buffer */
+               if (sock->readpos > 0) {
+                       memmove(sock->readbuf, READPTR(sock), sock->readbuflen - sock->readpos);
+                       sock->writepos -= sock->readpos;
+                       sock->readpos = 0;
+               }
+               
                if(sock->writepos + nr_bytes > sock->readbuflen) {
                        sock->readbuflen += sock->chunk_size;
                        sock->readbuf = perealloc(sock->readbuf, sock->readbuflen,