Skip to content

Commit d2c5def

Browse files
authored
Merge pull request #114 from ityuhui/yh-free-parseFromJSON-0329
Free the memory of list or map when json parsing fails
2 parents 6cd4058 + 7b6379e commit d2c5def

File tree

229 files changed

+5016
-770
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

229 files changed

+5016
-770
lines changed

kubernetes/model/core_v1_event_list.c

+13-2
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ core_v1_event_list_t *core_v1_event_list_parseFromJSON(cJSON *core_v1_event_list
116116

117117
core_v1_event_list_t *core_v1_event_list_local_var = NULL;
118118

119+
// define the local list for core_v1_event_list->items
120+
list_t *itemsList = NULL;
121+
119122
// define the local variable for core_v1_event_list->metadata
120123
v1_list_meta_t *metadata_local_nonprim = NULL;
121124

@@ -134,9 +137,8 @@ core_v1_event_list_t *core_v1_event_list_parseFromJSON(cJSON *core_v1_event_list
134137
goto end;
135138
}
136139

137-
list_t *itemsList;
138140

139-
cJSON *items_local_nonprimitive;
141+
cJSON *items_local_nonprimitive = NULL;
140142
if(!cJSON_IsArray(items)){
141143
goto end; //nonprimitive container
142144
}
@@ -178,6 +180,15 @@ core_v1_event_list_t *core_v1_event_list_parseFromJSON(cJSON *core_v1_event_list
178180

179181
return core_v1_event_list_local_var;
180182
end:
183+
if (itemsList) {
184+
listEntry_t *listEntry = NULL;
185+
list_ForEach(listEntry, itemsList) {
186+
core_v1_event_free(listEntry->data);
187+
listEntry->data = NULL;
188+
}
189+
list_freeList(itemsList);
190+
itemsList = NULL;
191+
}
181192
if (metadata_local_nonprim) {
182193
v1_list_meta_free(metadata_local_nonprim);
183194
metadata_local_nonprim = NULL;

kubernetes/model/events_v1_event_list.c

+13-2
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ events_v1_event_list_t *events_v1_event_list_parseFromJSON(cJSON *events_v1_even
116116

117117
events_v1_event_list_t *events_v1_event_list_local_var = NULL;
118118

119+
// define the local list for events_v1_event_list->items
120+
list_t *itemsList = NULL;
121+
119122
// define the local variable for events_v1_event_list->metadata
120123
v1_list_meta_t *metadata_local_nonprim = NULL;
121124

@@ -134,9 +137,8 @@ events_v1_event_list_t *events_v1_event_list_parseFromJSON(cJSON *events_v1_even
134137
goto end;
135138
}
136139

137-
list_t *itemsList;
138140

139-
cJSON *items_local_nonprimitive;
141+
cJSON *items_local_nonprimitive = NULL;
140142
if(!cJSON_IsArray(items)){
141143
goto end; //nonprimitive container
142144
}
@@ -178,6 +180,15 @@ events_v1_event_list_t *events_v1_event_list_parseFromJSON(cJSON *events_v1_even
178180

179181
return events_v1_event_list_local_var;
180182
end:
183+
if (itemsList) {
184+
listEntry_t *listEntry = NULL;
185+
list_ForEach(listEntry, itemsList) {
186+
events_v1_event_free(listEntry->data);
187+
listEntry->data = NULL;
188+
}
189+
list_freeList(itemsList);
190+
itemsList = NULL;
191+
}
181192
if (metadata_local_nonprim) {
182193
v1_list_meta_free(metadata_local_nonprim);
183194
metadata_local_nonprim = NULL;

kubernetes/model/v1_aggregation_rule.c

+13-2
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,13 @@ v1_aggregation_rule_t *v1_aggregation_rule_parseFromJSON(cJSON *v1_aggregation_r
6767

6868
v1_aggregation_rule_t *v1_aggregation_rule_local_var = NULL;
6969

70+
// define the local list for v1_aggregation_rule->cluster_role_selectors
71+
list_t *cluster_role_selectorsList = NULL;
72+
7073
// v1_aggregation_rule->cluster_role_selectors
7174
cJSON *cluster_role_selectors = cJSON_GetObjectItemCaseSensitive(v1_aggregation_ruleJSON, "clusterRoleSelectors");
72-
list_t *cluster_role_selectorsList;
7375
if (cluster_role_selectors) {
74-
cJSON *cluster_role_selectors_local_nonprimitive;
76+
cJSON *cluster_role_selectors_local_nonprimitive = NULL;
7577
if(!cJSON_IsArray(cluster_role_selectors)){
7678
goto end; //nonprimitive container
7779
}
@@ -96,6 +98,15 @@ v1_aggregation_rule_t *v1_aggregation_rule_parseFromJSON(cJSON *v1_aggregation_r
9698

9799
return v1_aggregation_rule_local_var;
98100
end:
101+
if (cluster_role_selectorsList) {
102+
listEntry_t *listEntry = NULL;
103+
list_ForEach(listEntry, cluster_role_selectorsList) {
104+
v1_label_selector_free(listEntry->data);
105+
listEntry->data = NULL;
106+
}
107+
list_freeList(cluster_role_selectorsList);
108+
cluster_role_selectorsList = NULL;
109+
}
99110
return NULL;
100111

101112
}

kubernetes/model/v1_api_group.c

+26-4
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,12 @@ v1_api_group_t *v1_api_group_parseFromJSON(cJSON *v1_api_groupJSON){
164164
// define the local variable for v1_api_group->preferred_version
165165
v1_group_version_for_discovery_t *preferred_version_local_nonprim = NULL;
166166

167+
// define the local list for v1_api_group->server_address_by_client_cidrs
168+
list_t *server_address_by_client_cidrsList = NULL;
169+
170+
// define the local list for v1_api_group->versions
171+
list_t *versionsList = NULL;
172+
167173
// v1_api_group->api_version
168174
cJSON *api_version = cJSON_GetObjectItemCaseSensitive(v1_api_groupJSON, "apiVersion");
169175
if (api_version) {
@@ -202,9 +208,8 @@ v1_api_group_t *v1_api_group_parseFromJSON(cJSON *v1_api_groupJSON){
202208

203209
// v1_api_group->server_address_by_client_cidrs
204210
cJSON *server_address_by_client_cidrs = cJSON_GetObjectItemCaseSensitive(v1_api_groupJSON, "serverAddressByClientCIDRs");
205-
list_t *server_address_by_client_cidrsList;
206211
if (server_address_by_client_cidrs) {
207-
cJSON *server_address_by_client_cidrs_local_nonprimitive;
212+
cJSON *server_address_by_client_cidrs_local_nonprimitive = NULL;
208213
if(!cJSON_IsArray(server_address_by_client_cidrs)){
209214
goto end; //nonprimitive container
210215
}
@@ -228,9 +233,8 @@ v1_api_group_t *v1_api_group_parseFromJSON(cJSON *v1_api_groupJSON){
228233
goto end;
229234
}
230235

231-
list_t *versionsList;
232236

233-
cJSON *versions_local_nonprimitive;
237+
cJSON *versions_local_nonprimitive = NULL;
234238
if(!cJSON_IsArray(versions)){
235239
goto end; //nonprimitive container
236240
}
@@ -263,6 +267,24 @@ v1_api_group_t *v1_api_group_parseFromJSON(cJSON *v1_api_groupJSON){
263267
v1_group_version_for_discovery_free(preferred_version_local_nonprim);
264268
preferred_version_local_nonprim = NULL;
265269
}
270+
if (server_address_by_client_cidrsList) {
271+
listEntry_t *listEntry = NULL;
272+
list_ForEach(listEntry, server_address_by_client_cidrsList) {
273+
v1_server_address_by_client_cidr_free(listEntry->data);
274+
listEntry->data = NULL;
275+
}
276+
list_freeList(server_address_by_client_cidrsList);
277+
server_address_by_client_cidrsList = NULL;
278+
}
279+
if (versionsList) {
280+
listEntry_t *listEntry = NULL;
281+
list_ForEach(listEntry, versionsList) {
282+
v1_group_version_for_discovery_free(listEntry->data);
283+
listEntry->data = NULL;
284+
}
285+
list_freeList(versionsList);
286+
versionsList = NULL;
287+
}
266288
return NULL;
267289

268290
}

kubernetes/model/v1_api_group_list.c

+13-2
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ v1_api_group_list_t *v1_api_group_list_parseFromJSON(cJSON *v1_api_group_listJSO
9797

9898
v1_api_group_list_t *v1_api_group_list_local_var = NULL;
9999

100+
// define the local list for v1_api_group_list->groups
101+
list_t *groupsList = NULL;
102+
100103
// v1_api_group_list->api_version
101104
cJSON *api_version = cJSON_GetObjectItemCaseSensitive(v1_api_group_listJSON, "apiVersion");
102105
if (api_version) {
@@ -112,9 +115,8 @@ v1_api_group_list_t *v1_api_group_list_parseFromJSON(cJSON *v1_api_group_listJSO
112115
goto end;
113116
}
114117

115-
list_t *groupsList;
116118

117-
cJSON *groups_local_nonprimitive;
119+
cJSON *groups_local_nonprimitive = NULL;
118120
if(!cJSON_IsArray(groups)){
119121
goto end; //nonprimitive container
120122
}
@@ -149,6 +151,15 @@ v1_api_group_list_t *v1_api_group_list_parseFromJSON(cJSON *v1_api_group_listJSO
149151

150152
return v1_api_group_list_local_var;
151153
end:
154+
if (groupsList) {
155+
listEntry_t *listEntry = NULL;
156+
list_ForEach(listEntry, groupsList) {
157+
v1_api_group_free(listEntry->data);
158+
listEntry->data = NULL;
159+
}
160+
list_freeList(groupsList);
161+
groupsList = NULL;
162+
}
152163
return NULL;
153164

154165
}

kubernetes/model/v1_api_resource.c

+39-6
Original file line numberDiff line numberDiff line change
@@ -220,11 +220,19 @@ v1_api_resource_t *v1_api_resource_parseFromJSON(cJSON *v1_api_resourceJSON){
220220

221221
v1_api_resource_t *v1_api_resource_local_var = NULL;
222222

223+
// define the local list for v1_api_resource->categories
224+
list_t *categoriesList = NULL;
225+
226+
// define the local list for v1_api_resource->short_names
227+
list_t *short_namesList = NULL;
228+
229+
// define the local list for v1_api_resource->verbs
230+
list_t *verbsList = NULL;
231+
223232
// v1_api_resource->categories
224233
cJSON *categories = cJSON_GetObjectItemCaseSensitive(v1_api_resourceJSON, "categories");
225-
list_t *categoriesList;
226234
if (categories) {
227-
cJSON *categories_local;
235+
cJSON *categories_local = NULL;
228236
if(!cJSON_IsArray(categories)) {
229237
goto end;//primitive container
230238
}
@@ -287,9 +295,8 @@ v1_api_resource_t *v1_api_resource_parseFromJSON(cJSON *v1_api_resourceJSON){
287295

288296
// v1_api_resource->short_names
289297
cJSON *short_names = cJSON_GetObjectItemCaseSensitive(v1_api_resourceJSON, "shortNames");
290-
list_t *short_namesList;
291298
if (short_names) {
292-
cJSON *short_names_local;
299+
cJSON *short_names_local = NULL;
293300
if(!cJSON_IsArray(short_names)) {
294301
goto end;//primitive container
295302
}
@@ -332,9 +339,8 @@ v1_api_resource_t *v1_api_resource_parseFromJSON(cJSON *v1_api_resourceJSON){
332339
goto end;
333340
}
334341

335-
list_t *verbsList;
336342

337-
cJSON *verbs_local;
343+
cJSON *verbs_local = NULL;
338344
if(!cJSON_IsArray(verbs)) {
339345
goto end;//primitive container
340346
}
@@ -374,6 +380,33 @@ v1_api_resource_t *v1_api_resource_parseFromJSON(cJSON *v1_api_resourceJSON){
374380

375381
return v1_api_resource_local_var;
376382
end:
383+
if (categoriesList) {
384+
listEntry_t *listEntry = NULL;
385+
list_ForEach(listEntry, categoriesList) {
386+
free(listEntry->data);
387+
listEntry->data = NULL;
388+
}
389+
list_freeList(categoriesList);
390+
categoriesList = NULL;
391+
}
392+
if (short_namesList) {
393+
listEntry_t *listEntry = NULL;
394+
list_ForEach(listEntry, short_namesList) {
395+
free(listEntry->data);
396+
listEntry->data = NULL;
397+
}
398+
list_freeList(short_namesList);
399+
short_namesList = NULL;
400+
}
401+
if (verbsList) {
402+
listEntry_t *listEntry = NULL;
403+
list_ForEach(listEntry, verbsList) {
404+
free(listEntry->data);
405+
listEntry->data = NULL;
406+
}
407+
list_freeList(verbsList);
408+
verbsList = NULL;
409+
}
377410
return NULL;
378411

379412
}

kubernetes/model/v1_api_resource_list.c

+13-2
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,9 @@ v1_api_resource_list_t *v1_api_resource_list_parseFromJSON(cJSON *v1_api_resourc
113113

114114
v1_api_resource_list_t *v1_api_resource_list_local_var = NULL;
115115

116+
// define the local list for v1_api_resource_list->resources
117+
list_t *resourcesList = NULL;
118+
116119
// v1_api_resource_list->api_version
117120
cJSON *api_version = cJSON_GetObjectItemCaseSensitive(v1_api_resource_listJSON, "apiVersion");
118121
if (api_version) {
@@ -149,9 +152,8 @@ v1_api_resource_list_t *v1_api_resource_list_parseFromJSON(cJSON *v1_api_resourc
149152
goto end;
150153
}
151154

152-
list_t *resourcesList;
153155

154-
cJSON *resources_local_nonprimitive;
156+
cJSON *resources_local_nonprimitive = NULL;
155157
if(!cJSON_IsArray(resources)){
156158
goto end; //nonprimitive container
157159
}
@@ -178,6 +180,15 @@ v1_api_resource_list_t *v1_api_resource_list_parseFromJSON(cJSON *v1_api_resourc
178180

179181
return v1_api_resource_list_local_var;
180182
end:
183+
if (resourcesList) {
184+
listEntry_t *listEntry = NULL;
185+
list_ForEach(listEntry, resourcesList) {
186+
v1_api_resource_free(listEntry->data);
187+
listEntry->data = NULL;
188+
}
189+
list_freeList(resourcesList);
190+
resourcesList = NULL;
191+
}
181192
return NULL;
182193

183194
}

kubernetes/model/v1_api_service_list.c

+13-2
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ v1_api_service_list_t *v1_api_service_list_parseFromJSON(cJSON *v1_api_service_l
116116

117117
v1_api_service_list_t *v1_api_service_list_local_var = NULL;
118118

119+
// define the local list for v1_api_service_list->items
120+
list_t *itemsList = NULL;
121+
119122
// define the local variable for v1_api_service_list->metadata
120123
v1_list_meta_t *metadata_local_nonprim = NULL;
121124

@@ -134,9 +137,8 @@ v1_api_service_list_t *v1_api_service_list_parseFromJSON(cJSON *v1_api_service_l
134137
goto end;
135138
}
136139

137-
list_t *itemsList;
138140

139-
cJSON *items_local_nonprimitive;
141+
cJSON *items_local_nonprimitive = NULL;
140142
if(!cJSON_IsArray(items)){
141143
goto end; //nonprimitive container
142144
}
@@ -178,6 +180,15 @@ v1_api_service_list_t *v1_api_service_list_parseFromJSON(cJSON *v1_api_service_l
178180

179181
return v1_api_service_list_local_var;
180182
end:
183+
if (itemsList) {
184+
listEntry_t *listEntry = NULL;
185+
list_ForEach(listEntry, itemsList) {
186+
v1_api_service_free(listEntry->data);
187+
listEntry->data = NULL;
188+
}
189+
list_freeList(itemsList);
190+
itemsList = NULL;
191+
}
181192
if (metadata_local_nonprim) {
182193
v1_list_meta_free(metadata_local_nonprim);
183194
metadata_local_nonprim = NULL;

kubernetes/model/v1_api_service_status.c

+13-2
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,13 @@ v1_api_service_status_t *v1_api_service_status_parseFromJSON(cJSON *v1_api_servi
6767

6868
v1_api_service_status_t *v1_api_service_status_local_var = NULL;
6969

70+
// define the local list for v1_api_service_status->conditions
71+
list_t *conditionsList = NULL;
72+
7073
// v1_api_service_status->conditions
7174
cJSON *conditions = cJSON_GetObjectItemCaseSensitive(v1_api_service_statusJSON, "conditions");
72-
list_t *conditionsList;
7375
if (conditions) {
74-
cJSON *conditions_local_nonprimitive;
76+
cJSON *conditions_local_nonprimitive = NULL;
7577
if(!cJSON_IsArray(conditions)){
7678
goto end; //nonprimitive container
7779
}
@@ -96,6 +98,15 @@ v1_api_service_status_t *v1_api_service_status_parseFromJSON(cJSON *v1_api_servi
9698

9799
return v1_api_service_status_local_var;
98100
end:
101+
if (conditionsList) {
102+
listEntry_t *listEntry = NULL;
103+
list_ForEach(listEntry, conditionsList) {
104+
v1_api_service_condition_free(listEntry->data);
105+
listEntry->data = NULL;
106+
}
107+
list_freeList(conditionsList);
108+
conditionsList = NULL;
109+
}
99110
return NULL;
100111

101112
}

0 commit comments

Comments
 (0)