@cryptotaxi247 / netdata-1 / commits / dfbf2c4b6

Fix claiming on startup (#19954)

Fix heap-buffer-overflow

Stelios Fragkakis committed Mar 24, 2025 at 19:19 UTC dfbf2c4b64bffc162bc7600e6e6d3f0cf252e46c
1 file changed +7 -3
src/claim/claim-with-api.c
+7 -3
@@ -84,7 +84,8 @@ static size_t response_write_callback(void *ptr, size_t size, size_t nmemb, void
84 return real_size;
85 }
86
87 -static const char *curl_add_json_room(BUFFER *wb, const char *start, const char *end) {
87 +static const char *curl_add_json_room(BUFFER *wb, const char *start, const char *end, bool last_item)
88 +{
89 size_t len = end - start;
90
91 // copy the item to an new buffer and terminate it
@@ -97,6 +98,9 @@ static const char *curl_add_json_room(BUFFER *wb, const char *start, const char
98 if(trimmed)
99 buffer_json_add_array_item_string(wb, trimmed);
100
101 + if (last_item)
102 + return NULL;
103 +
104 // prepare for the next item
105 start = end + 1;
106
@@ -117,11 +121,11 @@ void curl_add_rooms_json_array(BUFFER *wb, const char *rooms) {
121
122 // Process each item in the comma-separated list
123 while ((end = strchr(start, ',')) != NULL)
120 - start = curl_add_json_room(wb, start, end);
124 + start = curl_add_json_room(wb, start, end, false);
125
126 // Process the last item if any
127 if (*start)
124 - curl_add_json_room(wb, start, &start[strlen(start)]);
128 + curl_add_json_room(wb, start, &start[strlen(start)], true);
129 }
130 buffer_json_array_close(wb);
131 }