summaryrefslogtreecommitdiff
path: root/src/mod_rrdtool.c
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2017-08-12 15:39:12 -0400
committerGlenn Strauss <gstrauss@gluelogic.com>2017-08-12 15:39:12 -0400
commit9bc61f16cbb2a14e8225d847bbef24ace21f67c6 (patch)
treeef3a8faa385504b09925da730ecd650f7690d1de /src/mod_rrdtool.c
parent748fc860fb5f7a34ec9ab3a785cd4e552a521d41 (diff)
downloadlighttpd-git-9bc61f16cbb2a14e8225d847bbef24ace21f67c6.tar.gz
[core] attempt to quiet coverity false positives
Diffstat (limited to 'src/mod_rrdtool.c')
-rw-r--r--src/mod_rrdtool.c34
1 files changed, 12 insertions, 22 deletions
diff --git a/src/mod_rrdtool.c b/src/mod_rrdtool.c
index f68587a9..8b80e151 100644
--- a/src/mod_rrdtool.c
+++ b/src/mod_rrdtool.c
@@ -149,24 +149,21 @@ static ssize_t safe_write(int fd, const void *buf, size_t count) {
}
/* this assumes we get enough data on a successful read */
-static ssize_t safe_read(int fd, void *buf, size_t count) {
+static ssize_t safe_read(int fd, buffer *b) {
ssize_t res;
- for (;;) {
- res = read(fd, buf, count);
- if (res >= 0) return res;
- switch (errno) {
- case EINTR:
- continue;
- default:
- return -1;
- }
- }
+ buffer_string_prepare_copy(b, 4095);
+
+ do {
+ res = read(fd, b->ptr, b->size-1);
+ } while (-1 == res && errno == EINTR);
+
+ if (res >= 0) buffer_commit(b, res);
+ return res;
}
static int mod_rrdtool_create_rrd(server *srv, plugin_data *p, plugin_config *s) {
struct stat st;
- int r;
/* check if DB already exists */
if (0 == stat(s->path_rrd->ptr, &st)) {
@@ -211,16 +208,13 @@ static int mod_rrdtool_create_rrd(server *srv, plugin_data *p, plugin_config *s)
return HANDLER_ERROR;
}
- buffer_string_prepare_copy(p->resp, 4095);
- if (-1 == (r = safe_read(p->read_fd, p->resp->ptr, p->resp->size - 1))) {
+ if (-1 == safe_read(p->read_fd, p->resp)) {
log_error_write(srv, __FILE__, __LINE__, "ss",
"rrdtool-read: failed", strerror(errno));
return HANDLER_ERROR;
}
- buffer_commit(p->resp, r);
-
if (p->resp->ptr[0] != 'O' ||
p->resp->ptr[1] != 'K') {
log_error_write(srv, __FILE__, __LINE__, "sbb",
@@ -352,7 +346,6 @@ TRIGGER_FUNC(mod_rrd_trigger) {
for (i = 0; i < srv->config_context->used; i++) {
plugin_config *s = p->config_storage[i];
- int r;
if (buffer_string_is_empty(s->path_rrd)) continue;
@@ -370,7 +363,7 @@ TRIGGER_FUNC(mod_rrd_trigger) {
buffer_append_int(p->cmd, s->requests);
buffer_append_string_len(p->cmd, CONST_STR_LEN("\n"));
- if (-1 == (r = safe_write(p->write_fd, CONST_BUF_LEN(p->cmd)))) {
+ if (-1 == safe_write(p->write_fd, CONST_BUF_LEN(p->cmd))) {
p->rrdtool_running = 0;
log_error_write(srv, __FILE__, __LINE__, "ss",
@@ -379,8 +372,7 @@ TRIGGER_FUNC(mod_rrd_trigger) {
return HANDLER_ERROR;
}
- buffer_string_prepare_copy(p->resp, 4095);
- if (-1 == (r = safe_read(p->read_fd, p->resp->ptr, p->resp->size - 1))) {
+ if (-1 == safe_read(p->read_fd, p->resp)) {
p->rrdtool_running = 0;
log_error_write(srv, __FILE__, __LINE__, "ss",
@@ -389,8 +381,6 @@ TRIGGER_FUNC(mod_rrd_trigger) {
return HANDLER_ERROR;
}
- buffer_commit(p->resp, r);
-
if (p->resp->ptr[0] != 'O' ||
p->resp->ptr[1] != 'K') {
/* don't fail on this error if we just started (graceful restart, the old one might have just updated too) */