diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c index a767c8e2835018484126c1b4e672ef87d80b6ee2..6979465a0f41db6e527f003bd4703f46de0e8523 100644 --- a/src/client/src/tscParseLineProtocol.c +++ b/src/client/src/tscParseLineProtocol.c @@ -1178,11 +1178,12 @@ static int doSmlInsertOneDataPoint(TAOS* taos, TAOS_SML_DATA_POINT* point, SSmlL for (int col = 1; col < point->fieldNum; ++col) { TAOS_SML_KV* kv = point->fields + col; int32_t len = 0; - retLen = converToStr(sql + sqlLen, kv->type, kv->value, kv->length, &len); - if (retLen >= kv->length || retLen == TSDB_CODE_TSC_INVALID_VALUE) { + + if (freeBytes - sqlLen <= kv->length) { tscError("SML:0x%" PRIx64 " no free space for converToStr", info->id); return TSDB_CODE_TSC_OUT_OF_MEMORY; } + converToStr(sql + sqlLen, kv->type, kv->value, kv->length, &len); sqlLen += len; retLen = snprintf(sql + sqlLen, freeBytes - sqlLen, ","); if (retLen >= freeBytes - sqlLen) { diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index 4aa7ff67bb4df3d3fe34d2be16241d2584f94171..c385e37fb96d7e23ac7d1527e5a8e60654925a64 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -43,51 +43,51 @@ int32_t converToStr(char *str, int type, void *buf, int32_t bufSize, int32_t *le switch (type) { case TSDB_DATA_TYPE_NULL: - n = snprintf(str, bufSize, "null"); + n = sprintf(str, "null"); break; case TSDB_DATA_TYPE_BOOL: - n = snprintf(str, bufSize, (*(int8_t*)buf) ? "true" : "false"); + n = sprintf(str, (*(int8_t*)buf) ? "true" : "false"); break; case TSDB_DATA_TYPE_TINYINT: - n = snprintf(str, bufSize, "%d", *(int8_t*)buf); + n = sprintf(str, "%d", *(int8_t*)buf); break; case TSDB_DATA_TYPE_SMALLINT: - n = snprintf(str, bufSize, "%d", *(int16_t*)buf); + n = sprintf(str, "%d", *(int16_t*)buf); break; case TSDB_DATA_TYPE_INT: - n = snprintf(str, bufSize, "%d", *(int32_t*)buf); + n = sprintf(str, "%d", *(int32_t*)buf); break; case TSDB_DATA_TYPE_BIGINT: case TSDB_DATA_TYPE_TIMESTAMP: - n = snprintf(str, bufSize, "%" PRId64, *(int64_t*)buf); + n = sprintf(str, "%" PRId64, *(int64_t*)buf); break; case TSDB_DATA_TYPE_UTINYINT: - n = snprintf(str, bufSize, "%d", *(uint8_t*)buf); + n = sprintf(str, "%d", *(uint8_t*)buf); break; case TSDB_DATA_TYPE_USMALLINT: - n = snprintf(str, bufSize, "%d", *(uint16_t*)buf); + n = sprintf(str, "%d", *(uint16_t*)buf); break; case TSDB_DATA_TYPE_UINT: - n = snprintf(str, bufSize, "%u", *(uint32_t*)buf); + n = sprintf(str, "%u", *(uint32_t*)buf); break; case TSDB_DATA_TYPE_UBIGINT: - n = snprintf(str, bufSize, "%" PRIu64, *(uint64_t*)buf); + n = sprintf(str, "%" PRIu64, *(uint64_t*)buf); break; case TSDB_DATA_TYPE_FLOAT: - n = snprintf(str, bufSize, "%.*e", DECIMAL_DIG, GET_FLOAT_VAL(buf)); + n = sprintf(str, "%.*e", DECIMAL_DIG, GET_FLOAT_VAL(buf)); break; case TSDB_DATA_TYPE_DOUBLE: - n = snprintf(str, bufSize, "%.*e", DECIMAL_DIG, GET_DOUBLE_VAL(buf)); + n = sprintf(str, "%.*e", DECIMAL_DIG, GET_DOUBLE_VAL(buf)); break; case TSDB_DATA_TYPE_BINARY: