From 9d68da4664af5d71e7b73f11dd2837f946df467d Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Wed, 21 Oct 2020 16:24:43 +0100 Subject: [PATCH] Fix plugin payload modification. --- src/plugin.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/plugin.c b/src/plugin.c index 7abcc443..54cbd373 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -137,9 +137,14 @@ int plugin__handle_message(struct mosquitto_db *db, struct mosquitto *context, s } stored->topic = event_data.topic; - if(stored->payloadlen != event_data.payloadlen){ + if(UHPA_ACCESS(stored->payload, stored->payloadlen) != event_data.payload){ UHPA_FREE(stored->payload, stored->payloadlen); - UHPA_ALLOC(stored->payload, event_data.payloadlen); + if(event_data.payloadlen > sizeof(stored->payload.array)){ + stored->payload.ptr = event_data.payload; + }else{ + memcpy(stored->payload.array, event_data.payload, event_data.payloadlen); + mosquitto_free(event_data.payload); + } stored->payloadlen = event_data.payloadlen; } memcpy(UHPA_ACCESS(stored->payload, stored->payloadlen), event_data.payload, stored->payloadlen);