diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c index d5883af7f63072cc81153f0b793ad22006a54de8..1dcbf12290934136102e967e4b4ab24b54a6d493 100644 --- a/src/client/src/tscParseLineProtocol.c +++ b/src/client/src/tscParseLineProtocol.c @@ -1743,6 +1743,18 @@ static int32_t parseSmlMeasurement(TAOS_SML_DATA_POINT *pSml, const char **index return TSDB_CODE_SUCCESS; } +//Table name can only contain digits(0-9),alphebet(a-z),underscore(_) +static int32_t isValidChildTableName(const char *pTbName, int16_t len) { + const char *cur = pTbName; + for (int i = 0; i < len; ++i) { + if(!isdigit(cur[i]) && !isalpha(cur[i]) && (cur[i] != '_')) { + return TSDB_CODE_TSC_LINE_SYNTAX_ERROR; + } + } + return TSDB_CODE_SUCCESS; +} + + static int32_t parseSmlKvPairs(TAOS_SML_KV **pKVs, int *num_kvs, const char **index, bool isField, TAOS_SML_DATA_POINT* smlData) { const char *cur = *index; @@ -1776,6 +1788,10 @@ static int32_t parseSmlKvPairs(TAOS_SML_KV **pKVs, int *num_kvs, } if (!isField && (strcasecmp(pkv->key, "ID") == 0) && pkv->type == TSDB_DATA_TYPE_BINARY) { + ret = isValidChildTableName(pkv->value, pkv->length); + if (ret) { + goto error; + } smlData->childTableName = malloc( pkv->length + 1); memcpy(smlData->childTableName, pkv->value, pkv->length); smlData->childTableName[pkv->length] = '\0';