From 8c423dd4ffbb2962ff5219a7531e918aa01bb46d Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Mon, 26 Jul 2021 13:09:43 +0800 Subject: [PATCH] [TD-5521]: [schemaless]id can only contain digits/alphabet/underscore --- src/client/src/tscParseLineProtocol.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c index d5883af7f6..08d27fd86f 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'; -- GitLab