[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)
@@ -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;
