diff options
author | Stefan Bühler <stbuehler@web.de> | 2014-02-16 13:08:32 +0000 |
---|---|---|
committer | Stefan Bühler <stbuehler@web.de> | 2014-02-16 13:08:32 +0000 |
commit | b106513e58b6283d5eaf129081ab621e7a7b4745 (patch) | |
tree | b988aeca4d36a0948d252fd06460882789829cb2 | |
parent | 9f2be4882d73118d3f4e17471cb64269c7ae94ef (diff) | |
download | lighttpd-git-b106513e58b6283d5eaf129081ab621e7a7b4745.tar.gz |
[network] check return value of lseek()
From: Stefan Bühler <stbuehler@web.de>
git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2953 152afb58-edef-0310-8abb-c4023f1b3aa9
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/network_openssl.c | 8 | ||||
-rw-r--r-- | src/network_write.c | 7 |
3 files changed, 12 insertions, 4 deletions
@@ -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); |