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;
+ }
topic = strdup (msg->topic);
name = strip_prefix (topic);
}
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.");
+ 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)
* CACert "ca.pem" Enables TLS if set
* CertificateFile "client-cert.pem" optional
* CertificateKeyFile "client-key.pem" optional
- * TLSprotocol "tlsv1.2" optional
+ * TLSProtocol "tlsv1.2" optional
* </Publish>
*/
static int mqtt_config_publisher (oconfig_item_t *ci)
cf_util_get_string (child, &conf->certificatefile);
else if (strcasecmp ("CertificateKeyFile", child->key) == 0)
cf_util_get_string (child, &conf->certificatekeyfile);
- else if (strcasecmp ("TLSprotocol", child->key) == 0)
+ else if (strcasecmp ("TLSProtocol", child->key) == 0)
cf_util_get_string (child, &conf->tlsprotocol);
else if (strcasecmp ("CipherSuite", child->key) == 0)
cf_util_get_string (child, &conf->ciphersuite);
* User "guest"
* Password "secret"
* Topic "collectd/#"
- * </Publish>
+ * </Subscribe>
*/
static int mqtt_config_subscriber (oconfig_item_t *ci)
{