Reset bufpos to 0 immediately after refilling the buffer. Otherwise, we
risk leaving the connection in an indeterminate state if the server fails to send a chunk delimiter. Depending on the application and on the sizes of the preceding chunks, the result can be anything from missing data to a segfault. With this patch, it will be reported as a protocol error. PR: 204771 MFC after: 1 week
This commit is contained in:
parent
942e4b4b79
commit
a568844c67
@ -246,8 +246,9 @@ http_fillbuf(struct httpio *io, size_t len)
|
||||
io->error = errno;
|
||||
return (-1);
|
||||
}
|
||||
io->bufpos = 0;
|
||||
io->buflen = nbytes;
|
||||
io->chunksize -= io->buflen;
|
||||
io->chunksize -= nbytes;
|
||||
|
||||
if (io->chunksize == 0) {
|
||||
if (fetch_read(io->conn, &ch, 1) != 1 || ch != '\r' ||
|
||||
@ -255,8 +256,6 @@ http_fillbuf(struct httpio *io, size_t len)
|
||||
return (-1);
|
||||
}
|
||||
|
||||
io->bufpos = 0;
|
||||
|
||||
return (io->buflen);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user