Skip to content

Commit 0e2e031

Browse files
authored
[C][Client][Clang Static Analyzer] Fix uninitialized argument value for valueHeader_ and valueForm_ (#7332)
1 parent 5e512e8 commit 0e2e031

File tree

2 files changed

+40
-16
lines changed

2 files changed

+40
-16
lines changed

modules/openapi-generator/src/main/resources/C-libcurl/api-body.mustache

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ end:
194194

195195
// header parameters
196196
char *keyHeader_{{{paramName}}} = NULL;
197-
{{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{dataType}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{projectName}}_{{operationId}}_{{baseName}}_e{{/isString}}{{/isEnum}}{{^isEnum}}{{#isString}}{{{dataType}}} *{{/isString}}{{/isEnum}}{{#isByteArray}}{{{dataType}}}{{/isByteArray}}{{#isDate}}{{{dataType}}}{{/isDate}}{{#isDateTime}}{{{dataType}}}{{/isDateTime}}{{#isFile}}{{{dataType}}}{{/isFile}}{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}} valueHeader_{{{paramName}}};
197+
{{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{dataType}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{projectName}}_{{operationId}}_{{baseName}}_e{{/isString}}{{/isEnum}}{{^isEnum}}{{#isString}}{{{dataType}}} *{{/isString}}{{/isEnum}}{{#isByteArray}}{{{dataType}}}{{/isByteArray}}{{#isDate}}{{{dataType}}}{{/isDate}}{{#isDateTime}}{{{dataType}}}{{/isDateTime}}{{#isFile}}{{{dataType}}}{{/isFile}}{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}} valueHeader_{{{paramName}}} = 0;
198198
keyValuePair_t *keyPairHeader_{{paramName}} = 0;
199199
if ({{paramName}}) {
200200
keyHeader_{{{paramName}}} = strdup("{{{baseName}}}");
@@ -243,12 +243,12 @@ end:
243243
// form parameters
244244
{{#isFile}}
245245
char *keyForm_{{paramName}} = NULL;
246-
{{{dataType}}} valueForm_{{paramName}};
246+
{{{dataType}}} valueForm_{{paramName}} = 0;
247247
keyValuePair_t *keyPairForm_{{paramName}} = 0;
248248
{{/isFile}}
249249
{{^isFile}}
250250
char *keyForm_{{paramName}} = NULL;
251-
{{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{dataType}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{projectName}}_{{operationId}}_{{baseName}}_e{{/isString}}{{/isEnum}}{{^isEnum}}{{#isString}}{{{dataType}}} *{{/isString}}{{/isEnum}}{{#isByteArray}}{{{dataType}}}{{/isByteArray}}{{#isDate}}{{{dataType}}}{{/isDate}}{{#isDateTime}}{{{dataType}}}{{/isDateTime}}{{#isFile}}{{{dataType}}}{{/isFile}}{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}} valueForm_{{paramName}};
251+
{{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{dataType}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{projectName}}_{{operationId}}_{{baseName}}_e{{/isString}}{{/isEnum}}{{^isEnum}}{{#isString}}{{{dataType}}} *{{/isString}}{{/isEnum}}{{#isByteArray}}{{{dataType}}}{{/isByteArray}}{{#isDate}}{{{dataType}}}{{/isDate}}{{#isDateTime}}{{{dataType}}}{{/isDateTime}}{{#isFile}}{{{dataType}}}{{/isFile}}{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{^isEnum}}{{{dataType}}}_t *{{/isEnum}}{{/isModel}}{{^isModel}}{{#isEnum}}{{datatypeWithEnum}}_e{{/isEnum}}{{/isModel}}{{#isUuid}}{{dataType}} *{{/isUuid}}{{#isEmail}}{{dataType}}{{/isEmail}}{{/isPrimitiveType}} valueForm_{{paramName}} = 0;
252252
keyValuePair_t *keyPairForm_{{paramName}} = 0;
253253
{{/isFile}}
254254
if ({{paramName}} != NULL)
@@ -403,7 +403,10 @@ end:
403403
free(keyHeader_{{{paramName}}});
404404
keyHeader_{{{paramName}}} = NULL;
405405
}
406-
free(valueHeader_{{{paramName}}});
406+
if (valueHeader_{{{paramName}}}) {
407+
free(valueHeader_{{{paramName}}});
408+
valueHeader_{{{paramName}}} = NULL;
409+
}
407410
{{/isString}}
408411
{{^isString}}
409412
if (keyHeader_{{{paramName}}}) {
@@ -483,7 +486,10 @@ end:
483486
free(keyForm_{{{paramName}}});
484487
keyForm_{{{paramName}}} = NULL;
485488
}
486-
free(valueForm_{{{paramName}}});
489+
if (valueForm_{{{paramName}}}) {
490+
free(valueForm_{{{paramName}}});
491+
valueForm_{{{paramName}}} = NULL;
492+
}
487493
free(keyPairForm_{{paramName}});
488494
{{/isString}}
489495
{{^isString}}
@@ -523,7 +529,10 @@ end:
523529
free(keyHeader_{{{paramName}}});
524530
keyHeader_{{{paramName}}} = NULL;
525531
}
526-
free(valueHeader_{{{paramName}}});
532+
if (valueHeader_{{{paramName}}}) {
533+
free(valueHeader_{{{paramName}}});
534+
valueHeader_{{{paramName}}} = NULL;
535+
}
527536
{{/isString}}
528537
{{^isString}}
529538
if (keyHeader_{{{paramName}}}) {
@@ -600,7 +609,10 @@ end:
600609
free(keyForm_{{{paramName}}});
601610
keyForm_{{{paramName}}} = NULL;
602611
}
603-
free(valueForm_{{{paramName}}});
612+
if (valueForm_{{{paramName}}}) {
613+
free(valueForm_{{{paramName}}});
614+
valueForm_{{{paramName}}} = NULL;
615+
}
604616
keyValuePair_free(keyPairForm_{{{paramName}}});
605617
{{/isString}}
606618
{{^isString}}

samples/client/petstore/c/api/PetAPI.c

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ PetAPI_deletePet(apiClient_t *apiClient, long petId , char * api_key )
155155

156156
// header parameters
157157
char *keyHeader_api_key = NULL;
158-
char * valueHeader_api_key;
158+
char * valueHeader_api_key = 0;
159159
keyValuePair_t *keyPairHeader_api_key = 0;
160160
if (api_key) {
161161
keyHeader_api_key = strdup("api_key");
@@ -195,7 +195,10 @@ PetAPI_deletePet(apiClient_t *apiClient, long petId , char * api_key )
195195
free(keyHeader_api_key);
196196
keyHeader_api_key = NULL;
197197
}
198-
free(valueHeader_api_key);
198+
if (valueHeader_api_key) {
199+
free(valueHeader_api_key);
200+
valueHeader_api_key = NULL;
201+
}
199202
free(keyPairHeader_api_key);
200203

201204
}
@@ -554,7 +557,7 @@ PetAPI_updatePetWithForm(apiClient_t *apiClient, long petId , char * name , char
554557

555558
// form parameters
556559
char *keyForm_name = NULL;
557-
char * valueForm_name;
560+
char * valueForm_name = 0;
558561
keyValuePair_t *keyPairForm_name = 0;
559562
if (name != NULL)
560563
{
@@ -566,7 +569,7 @@ PetAPI_updatePetWithForm(apiClient_t *apiClient, long petId , char * name , char
566569

567570
// form parameters
568571
char *keyForm_status = NULL;
569-
char * valueForm_status;
572+
char * valueForm_status = 0;
570573
keyValuePair_t *keyPairForm_status = 0;
571574
if (status != NULL)
572575
{
@@ -607,13 +610,19 @@ PetAPI_updatePetWithForm(apiClient_t *apiClient, long petId , char * name , char
607610
free(keyForm_name);
608611
keyForm_name = NULL;
609612
}
610-
free(valueForm_name);
613+
if (valueForm_name) {
614+
free(valueForm_name);
615+
valueForm_name = NULL;
616+
}
611617
keyValuePair_free(keyPairForm_name);
612618
if (keyForm_status) {
613619
free(keyForm_status);
614620
keyForm_status = NULL;
615621
}
616-
free(valueForm_status);
622+
if (valueForm_status) {
623+
free(valueForm_status);
624+
valueForm_status = NULL;
625+
}
617626
keyValuePair_free(keyPairForm_status);
618627

619628
}
@@ -654,7 +663,7 @@ PetAPI_uploadFile(apiClient_t *apiClient, long petId , char * additionalMetadata
654663

655664
// form parameters
656665
char *keyForm_additionalMetadata = NULL;
657-
char * valueForm_additionalMetadata;
666+
char * valueForm_additionalMetadata = 0;
658667
keyValuePair_t *keyPairForm_additionalMetadata = 0;
659668
if (additionalMetadata != NULL)
660669
{
@@ -666,7 +675,7 @@ PetAPI_uploadFile(apiClient_t *apiClient, long petId , char * additionalMetadata
666675

667676
// form parameters
668677
char *keyForm_file = NULL;
669-
binary_t* valueForm_file;
678+
binary_t* valueForm_file = 0;
670679
keyValuePair_t *keyPairForm_file = 0;
671680
if (file != NULL)
672681
{
@@ -715,7 +724,10 @@ PetAPI_uploadFile(apiClient_t *apiClient, long petId , char * additionalMetadata
715724
free(keyForm_additionalMetadata);
716725
keyForm_additionalMetadata = NULL;
717726
}
718-
free(valueForm_additionalMetadata);
727+
if (valueForm_additionalMetadata) {
728+
free(valueForm_additionalMetadata);
729+
valueForm_additionalMetadata = NULL;
730+
}
719731
free(keyPairForm_additionalMetadata);
720732
if (keyForm_file) {
721733
free(keyForm_file);

0 commit comments

Comments
 (0)