From b106513e58b6283d5eaf129081ab621e7a7b4745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20B=C3=BChler?= Date: Sun, 16 Feb 2014 13:08:32 +0000 Subject: [PATCH] [network] check return value of lseek() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Stefan Bühler git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2953 152afb58-edef-0310-8abb-c4023f1b3aa9 --- NEWS | 1 + src/network_openssl.c | 8 ++++++-- src/network_write.c | 7 +++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 8631fb4b..2178b3ce 100644 --- a/NEWS +++ b/NEWS @@ -17,6 +17,7 @@ NEWS * add force_assert() to enforce assertions as simple assert()s are disabled by -DNDEBUG (fixes #2546) * [mod_cml_lua] fix null pointer dereference * force assertion: setting FD_CLOEXEC must work (if available) + * [network] check return value of lseek() - 1.4.34 * [mod_auth] explicitly link ssl for SHA1 (fixes #2517) diff --git a/src/network_openssl.c b/src/network_openssl.c index 801a6292..04c29c05 100644 --- a/src/network_openssl.c +++ b/src/network_openssl.c @@ -187,10 +187,14 @@ int network_write_chunkqueue_openssl(server *srv, connection *con, SSL *ssl, chu } - lseek(ifd, offset, SEEK_SET); - if (-1 == (toSend = read(ifd, local_send_buffer, toSend))) { + if (-1 == lseek(ifd, offset, SEEK_SET)) { + log_error_write(srv, __FILE__, __LINE__, "ss", "lseek failed:", strerror(errno)); close(ifd); + return -1; + } + if (-1 == (toSend = read(ifd, local_send_buffer, toSend))) { log_error_write(srv, __FILE__, __LINE__, "ss", "read failed:", strerror(errno)); + close(ifd); return -1; } diff --git a/src/network_write.c b/src/network_write.c index 6aa6cfa3..930644ea 100644 --- a/src/network_write.c +++ b/src/network_write.c @@ -147,11 +147,14 @@ int network_write_chunkqueue_write(server *srv, connection *con, int fd, chunkqu #else /* USE_MMAP */ buffer_prepare_copy(srv->tmp_buf, toSend); - lseek(ifd, offset, SEEK_SET); + if (-1 == lseek(ifd, offset, SEEK_SET)) { + log_error_write(srv, __FILE__, __LINE__, "ss", "lseek: ", strerror(errno)); + close(ifd); + return -1; + } if (-1 == (toSend = read(ifd, srv->tmp_buf->ptr, toSend))) { log_error_write(srv, __FILE__, __LINE__, "ss", "read: ", strerror(errno)); close(ifd); - return -1; } close(ifd);