summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2020-12-27 22:34:38 -0500
committerGlenn Strauss <gstrauss@gluelogic.com>2020-12-27 22:35:48 -0500
commit37ae942346dca72b89ceada9a3bb999c77df44f8 (patch)
tree93040da3041bf923b09bab5784e739d681a9a7fb /src
parent5ec5e124c1697f71d714f631a762ccbf3f168023 (diff)
downloadlighttpd-git-37ae942346dca72b89ceada9a3bb999c77df44f8.tar.gz
[core] fix bug in read retry found by coverity
read retry loop needs separate var for result and data size to read rename 'toSend' variable to 'len' (of chunk)
Diffstat (limited to 'src')
-rw-r--r--src/chunk.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/chunk.c b/src/chunk.c
index 8c688f69..4d05a1b4 100644
--- a/src/chunk.c
+++ b/src/chunk.c
@@ -906,8 +906,8 @@ static int chunk_open_file_chunk(chunk * const restrict c, log_error_st * const
}
const off_t offset = c->offset;
- const off_t toSend = c->file.length - c->offset;
- if (offset > st.st_size || toSend > st.st_size || offset > st.st_size - toSend) {
+ const off_t len = c->file.length - c->offset;
+ if (offset > st.st_size || len > st.st_size || offset > st.st_size - len) {
log_error(errh, __FILE__, __LINE__, "file shrunk: %s", c->mem->ptr);
return -1;
}
@@ -1154,25 +1154,26 @@ chunkqueue_peek_data (chunkqueue * const cq,
case FILE_CHUNK:
if (c->file.fd >= 0 || 0 == chunk_open_file_chunk(c, errh)) {
off_t offset = c->offset;
- off_t toSend = c->file.length - c->offset;
- if (toSend > (off_t)space)
- toSend = (off_t)space;
+ off_t len = c->file.length - c->offset;
+ if (len > (off_t)space)
+ len = (off_t)space;
if (-1 == lseek(c->file.fd, offset, SEEK_SET)) {
log_perror(errh, __FILE__, __LINE__, "lseek(\"%s\")",
c->mem->ptr);
return -1;
}
+ ssize_t rd;
do {
- toSend = read(c->file.fd, data_in + *dlen, (size_t)toSend);
- } while (-1 == toSend && errno == EINTR);
- if (toSend <= 0) { /* -1 error; 0 EOF (unexpected) */
+ rd = read(c->file.fd, data_in + *dlen, (size_t)len);
+ } while (-1 == rd && errno == EINTR);
+ if (rd <= 0) { /* -1 error; 0 EOF (unexpected) */
log_perror(errh, __FILE__, __LINE__, "read(\"%s\")",
c->mem->ptr);
return -1;
}
- *dlen += (uint32_t)toSend;
+ *dlen += (uint32_t)rd;
break;
}
return -1;