From b218fd29ff2dbbad26eaecce1abe65ba3e791bdf Mon Sep 17 00:00:00 2001 From: "Evgeny Grin (Karlson2k)" Date: Mon, 8 Jun 2015 22:18:30 +0000 Subject: fix: send_param_adapter(): do not send chunks larger than requested when using sendfile() --- src/microhttpd/daemon.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c index 3952431c..b2fbbc43 100644 --- a/src/microhttpd/daemon.c +++ b/src/microhttpd/daemon.c @@ -1107,15 +1107,15 @@ send_param_adapter (struct MHD_Connection *connection, /* can use sendfile */ offset = (off_t) connection->response_write_position + connection->response->fd_off; left = connection->response->total_size - connection->response_write_position; - if (left > SSIZE_MAX) - left = SSIZE_MAX; /* cap at return value limit */ - if (-1 != (ret = sendfile (connection->socket_fd, + if (i > left) + i = left; + if (0 < (ret = sendfile (connection->socket_fd, fd, &offset, - (size_t) left))) + i))) { #if EPOLL_SUPPORT - if (ret < left) + if (requested_size > (size_t) ret) { /* partial write --- no longer write-ready */ connection->epoll_state &= ~MHD_EPOLL_STATE_WRITE_READY; -- cgit v1.2.3