[TD-5208]<fix>:fix potential mem leak when parsing value failed
This commit is contained in:
parent
c5e02db6bc
commit
bac3766fab
|
@ -1460,7 +1460,7 @@ static int32_t parseSmlTimeStamp(TAOS_SML_KV **pTS, const char **index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
value = calloc(len+1, 1);
|
value = calloc(len + 1, 1);
|
||||||
memcpy(value, start, len);
|
memcpy(value, start, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1541,13 +1541,6 @@ static bool parseSmlValue(TAOS_SML_KV *pKV, const char **index,
|
||||||
while (1) {
|
while (1) {
|
||||||
// unescaped ',' or ' ' or '\0' identifies a value
|
// unescaped ',' or ' ' or '\0' identifies a value
|
||||||
if ((*cur == ',' || *cur == ' ' || *cur == '\0') && *(cur - 1) != '\\') {
|
if ((*cur == ',' || *cur == ' ' || *cur == '\0') && *(cur - 1) != '\\') {
|
||||||
value = calloc(len + 1, 1);
|
|
||||||
memcpy(value, start, len);
|
|
||||||
value[len] = '\0';
|
|
||||||
if (!convertSmlValueType(pKV, value, len)) {
|
|
||||||
free(value);
|
|
||||||
return TSDB_CODE_TSC_LINE_SYNTAX_ERROR;
|
|
||||||
}
|
|
||||||
//unescaped ' ' or '\0' indicates end of value
|
//unescaped ' ' or '\0' indicates end of value
|
||||||
*is_last_kv = (*cur == ' ' || *cur == '\0') ? true : false;
|
*is_last_kv = (*cur == ' ' || *cur == '\0') ? true : false;
|
||||||
break;
|
break;
|
||||||
|
@ -1560,9 +1553,16 @@ static bool parseSmlValue(TAOS_SML_KV *pKV, const char **index,
|
||||||
len++;
|
len++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value) {
|
value = calloc(len + 1, 1);
|
||||||
|
memcpy(value, start, len);
|
||||||
|
value[len] = '\0';
|
||||||
|
if (!convertSmlValueType(pKV, value, len)) {
|
||||||
|
//free previous alocated key field
|
||||||
|
free(pKV->key);
|
||||||
free(value);
|
free(value);
|
||||||
|
return TSDB_CODE_TSC_LINE_SYNTAX_ERROR;
|
||||||
}
|
}
|
||||||
|
free(value);
|
||||||
|
|
||||||
*index = (*cur == '\0') ? cur : cur + 1;
|
*index = (*cur == '\0') ? cur : cur + 1;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
Loading…
Reference in New Issue