[C-libcurl] Guard memory free for query parameters to avoid coredump (#5356)

* [C-libcurl] Guard memory free for query parameters to avoid coredump

* [C-libcurl] Guard memory free for query parameters to avoid coredump (2nd)
This commit is contained in:
Hui Yu
2020-02-18 21:19:11 +08:00
committed by GitHub
parent 9c28f68504
commit f9a040d1a7

View File

@@ -131,8 +131,8 @@
// query parameters
{{^isListContainer}}
char *keyQuery_{{{paramName}}};
{{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{{dataType}}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{{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}} valueQuery_{{{paramName}}};
char *keyQuery_{{{paramName}}} = NULL;
{{#isPrimitiveType}}{{#isNumber}}{{{dataType}}}{{/isNumber}}{{#isLong}}{{{dataType}}}{{/isLong}}{{#isInteger}}{{{dataType}}}{{/isInteger}}{{#isDouble}}{{{dataType}}}{{/isDouble}}{{#isFloat}}{{{dataType}}}{{/isFloat}}{{#isBoolean}}{{{dataType}}}{{/isBoolean}}{{#isEnum}}{{#isString}}{{{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}} valueQuery_{{{paramName}}} {{#isString}}{{^isEnum}}= NULL{{/isEnum}}{{/isString}};
keyValuePair_t *keyPairQuery_{{paramName}} = 0;
{{/isListContainer}}
if ({{paramName}})
@@ -330,13 +330,28 @@
{{#queryParams}}
{{^isListContainer}}
{{#isString}}
free(keyQuery_{{{paramName}}});
free(valueQuery_{{{paramName}}});
keyValuePair_free(keyPairQuery_{{{paramName}}});
if(keyQuery_{{{paramName}}}){
free(keyQuery_{{{paramName}}});
keyQuery_{{{paramName}}} = NULL;
}
if(valueQuery_{{{paramName}}}){
free(valueQuery_{{{paramName}}});
valueQuery_{{{paramName}}} = NULL;
}
if(keyPairQuery_{{{paramName}}}){
keyValuePair_free(keyPairQuery_{{{paramName}}});
keyPairQuery_{{{paramName}}} = NULL;
}
{{/isString}}
{{^isString}}
free(keyQuery_{{{paramName}}});
keyValuePair_free(keyPairQuery_{{{paramName}}});
if(keyQuery_{{{paramName}}}){
free(keyQuery_{{{paramName}}});
keyQuery_{{{paramName}}} = NULL;
}
if(keyPairQuery_{{{paramName}}}){
keyValuePair_free(keyPairQuery_{{{paramName}}});
keyPairQuery_{{{paramName}}} = NULL;
}
{{/isString}}
{{/isListContainer}}
{{/queryParams}}
@@ -403,13 +418,28 @@ end:
{{#queryParams}}
{{^isListContainer}}
{{#isString}}
free(keyQuery_{{{paramName}}});
free(valueQuery_{{{paramName}}});
keyValuePair_free(keyPairQuery_{{{paramName}}});
if(keyQuery_{{{paramName}}}){
free(keyQuery_{{{paramName}}});
keyQuery_{{{paramName}}} = NULL;
}
if(valueQuery_{{{paramName}}}){
free(valueQuery_{{{paramName}}});
valueQuery_{{{paramName}}} = NULL;
}
if(keyPairQuery_{{{paramName}}}){
keyValuePair_free(keyPairQuery_{{{paramName}}});
keyPairQuery_{{{paramName}}} = NULL;
}
{{/isString}}
{{#isString}}
free(keyQuery_{{{paramName}}});
keyValuePair_free(keyPairQuery_{{{paramName}}});
if(keyQuery_{{{paramName}}}){
free(keyQuery_{{{paramName}}});
keyQuery_{{{paramName}}} = NULL;
}
if(keyPairQuery_{{{paramName}}}){
keyValuePair_free(keyPairQuery_{{{paramName}}});
keyPairQuery_{{{paramName}}} = NULL;
}
{{/isString}}
{{/isListContainer}}
{{/queryParams}}