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
}