Skip to content

Commit 5c3e1e6

Browse files
Leonardo Alminanaedsiper
authored andcommitted
decode_statsd: fixed resource leaks
Signed-off-by: Leonardo Alminana <[email protected]>
1 parent 9bdc527 commit 5c3e1e6

File tree

1 file changed

+29
-8
lines changed

1 file changed

+29
-8
lines changed

src/cmt_decode_statsd.c

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,14 @@ static int decode_labels(struct cmt *cmt,
157157
}
158158
label_k = cfl_sds_create_len(label_kv, colon - label_kv);
159159
if (label_k == NULL) {
160+
for (label_index = 0 ; label_index < 128 ; label_index++) {
161+
if (value_index_list[label_index] != NULL) {
162+
cfl_sds_destroy(value_index_list[label_index]);
163+
}
164+
}
165+
160166
free(value_index_list);
167+
161168
if (kvs != NULL) {
162169
cfl_utils_split_free(kvs);
163170
}
@@ -167,7 +174,15 @@ static int decode_labels(struct cmt *cmt,
167174
label_v = cfl_sds_create_len(colon + 1, strlen(label_kv) - strlen(label_k) - 1);
168175
if (label_v == NULL) {
169176
cfl_sds_destroy(label_k);
177+
178+
for (label_index = 0 ; label_index < 128 ; label_index++) {
179+
if (value_index_list[label_index] != NULL) {
180+
cfl_sds_destroy(value_index_list[label_index]);
181+
}
182+
}
183+
170184
free(value_index_list);
185+
171186
if (kvs != NULL) {
172187
cfl_utils_split_free(kvs);
173188
}
@@ -190,7 +205,15 @@ static int decode_labels(struct cmt *cmt,
190205
if (label_index > 127) {
191206
cfl_sds_destroy(label_k);
192207
cfl_sds_destroy(label_v);
208+
209+
for (label_index = 0 ; label_index < 128 ; label_index++) {
210+
if (value_index_list[label_index] != NULL) {
211+
cfl_sds_destroy(value_index_list[label_index]);
212+
}
213+
}
214+
193215
free(value_index_list);
216+
194217
if (kvs != NULL) {
195218
cfl_utils_split_free(kvs);
196219
}
@@ -227,20 +250,18 @@ static int decode_labels(struct cmt *cmt,
227250
}
228251
}
229252

230-
for (map_label_index = 0 ;
231-
result == CMT_DECODE_STATSD_SUCCESS &&
232-
map_label_index < map_label_count ;
233-
map_label_index++) {
234-
label_v = (cfl_sds_t) value_index_list[map_label_index];
235-
cfl_sds_destroy(label_v);
253+
for (label_index = 0 ; label_index < 128 ; label_index++) {
254+
if (value_index_list[label_index] != NULL) {
255+
cfl_sds_destroy(value_index_list[label_index]);
256+
}
236257
}
237258

259+
free(value_index_list);
260+
238261
if (kvs != NULL) {
239262
cfl_utils_split_free(kvs);
240263
}
241264

242-
free(value_index_list);
243-
244265
return result;
245266
}
246267

0 commit comments

Comments
 (0)