projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #1455 from rubenk/configure-ac-remove-dead-code
[collectd.git]
/
src
/
mqtt.c
diff --git
a/src/mqtt.c
b/src/mqtt.c
index
b2d21b1
..
8bc412c
100644
(file)
--- a/
src/mqtt.c
+++ b/
src/mqtt.c
@@
-185,9
+185,10
@@
static void on_message (
char *payload;
int status;
char *payload;
int status;
- if (
(msg->payloadlen <= 0)
- || (((uint8_t *) msg->payload)[msg->payloadlen - 1] != 0))
+ if (
msg->payloadlen <= 0) {
+ DEBUG ("mqtt plugin: message has empty payload");
return;
return;
+ }
topic = strdup (msg->topic);
name = strip_prefix (topic);
topic = strdup (msg->topic);
name = strip_prefix (topic);
@@
-216,7
+217,16
@@
static void on_message (
}
vl.values_len = ds->ds_num;
}
vl.values_len = ds->ds_num;
- payload = strdup ((void *) msg->payload);
+ payload = malloc (msg->payloadlen+1);
+ if (payload == NULL)
+ {
+ ERROR ("mqtt plugin: malloc for payload buffer failed.");
+ sfree (vl.values);
+ return;
+ }
+ memmove (payload, msg->payload, msg->payloadlen);
+ payload[msg->payloadlen] = 0;
+
DEBUG ("mqtt plugin: payload = \"%s\"", payload);
status = parse_values (payload, &vl, ds);
if (status != 0)
DEBUG ("mqtt plugin: payload = \"%s\"", payload);
status = parse_values (payload, &vl, ds);
if (status != 0)
@@
-719,7
+729,7
@@
static int mqtt_config_subscriber (oconfig_item_t *ci)
ERROR ("mqtt plugin: Unknown config option: %s", child->key);
}
ERROR ("mqtt plugin: Unknown config option: %s", child->key);
}
- tmp = realloc (subscribers, sizeof (*subscribers) *
subscribers_num
);
+ tmp = realloc (subscribers, sizeof (*subscribers) *
(subscribers_num + 1)
);
if (tmp == NULL)
{
ERROR ("mqtt plugin: realloc failed.");
if (tmp == NULL)
{
ERROR ("mqtt plugin: realloc failed.");