summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Bühler <stbuehler@web.de>2014-02-16 13:08:32 +0000
committerStefan Bühler <stbuehler@web.de>2014-02-16 13:08:32 +0000
commitb106513e58b6283d5eaf129081ab621e7a7b4745 (patch)
treeb988aeca4d36a0948d252fd06460882789829cb2
parent9f2be4882d73118d3f4e17471cb64269c7ae94ef (diff)
downloadlighttpd-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--NEWS1
-rw-r--r--src/network_openssl.c8
-rw-r--r--src/network_write.c7
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);