@cryptotaxi247 / netdata-1 / commits / d89befe22

Fix ACLK memleak (#15055)

* fix memleak * minor simplify

Timotej S committed May 15, 2023 at 22:18 UTC d89befe225f1e1441e01e01e090fc824631a6f40
1 file changed +9 -14
aclk/aclk_tx_msgs.c
+9 -14
@@ -51,13 +51,6 @@ uint16_t aclk_send_bin_message_subtopic_pid(mqtt_wss_client client, char *msg, s
51 return packet_id;
52 }
53
54 -// json_object_put returns int unfortunately :D
55 -// we need void(*fnc)(void *);
56 -static void json_object_put_wrapper(void *jsonobj)
57 -{
58 - json_object_put(jsonobj);
59 -}
60 -
54 #define TOPIC_MAX_LEN 512
55 #define V2_BIN_PAYLOAD_SEPARATOR "\x0D\x0A\x0D\x0A"
56 static int aclk_send_message_with_bin_payload(mqtt_wss_client client, json_object *msg, const char *topic, const void *payload, size_t payload_len)
@@ -76,19 +69,21 @@ static int aclk_send_message_with_bin_payload(mqtt_wss_client client, json_objec
69 str = json_object_to_json_string_ext(msg, JSON_C_TO_STRING_PLAIN);
70 len = strlen(str);
71
79 - if (payload_len) {
80 - full_msg = mallocz(len + strlen(V2_BIN_PAYLOAD_SEPARATOR) + payload_len);
72 + size_t full_msg_len = len;
73 + if (payload_len)
74 + full_msg_len += strlen(V2_BIN_PAYLOAD_SEPARATOR) + payload_len;
75
82 - memcpy(full_msg, str, len);
83 - json_object_put(msg);
84 - msg = NULL;
76 + full_msg = mallocz(full_msg_len);
77 + memcpy(full_msg, str, len);
78 + json_object_put(msg);
79 +
80 + if (payload_len) {
81 memcpy(&full_msg[len], V2_BIN_PAYLOAD_SEPARATOR, strlen(V2_BIN_PAYLOAD_SEPARATOR));
82 len += strlen(V2_BIN_PAYLOAD_SEPARATOR);
83 memcpy(&full_msg[len], payload, payload_len);
88 - len += payload_len;
84 }
85
91 - mqtt_wss_publish5(client, (char*)topic, NULL, (char*)(payload_len ? full_msg : str), (payload_len ? &freez_aclk_publish5b : &json_object_put_wrapper), len, MQTT_WSS_PUB_QOS1, &packet_id);
86 + mqtt_wss_publish5(client, (char*)topic, NULL, full_msg, &freez_aclk_publish5b, full_msg_len, MQTT_WSS_PUB_QOS1, &packet_id);
87
88 #ifdef NETDATA_INTERNAL_CHECKS
89 aclk_stats_msg_published(packet_id);