Fix fulltest make problems and add check for cfg str len.

This commit is contained in:
xiao-77 2024-12-16 11:27:48 +08:00
parent 6b49eededd
commit dc4dedd32c
1 changed files with 44 additions and 7 deletions

View File

@ -14,12 +14,12 @@
*/ */
#define _DEFAULT_SOURCE #define _DEFAULT_SOURCE
#include "tglobal.h"
#include "cJSON.h" #include "cJSON.h"
#include "defines.h" #include "defines.h"
#include "os.h" #include "os.h"
#include "osString.h" #include "osString.h"
#include "tconfig.h" #include "tconfig.h"
#include "tglobal.h"
#include "tgrant.h" #include "tgrant.h"
#include "tjson.h" #include "tjson.h"
#include "tlog.h" #include "tlog.h"
@ -357,6 +357,8 @@ int32_t tsMaxTsmaCalcDelay = 600;
int64_t tsmaDataDeleteMark = 1000 * 60 * 60 * 24; // in ms, default to 1d int64_t tsmaDataDeleteMark = 1000 * 60 * 60 * 24; // in ms, default to 1d
void *pTimezoneNameMap = NULL; void *pTimezoneNameMap = NULL;
int32_t taosCheckCfgStrValueLen(const char *name, const char *value, int32_t len);
#define TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, pName) \ #define TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, pName) \
if ((pItem = cfgGetItem(pCfg, pName)) == NULL) { \ if ((pItem = cfgGetItem(pCfg, pName)) == NULL) { \
TAOS_RETURN(TSDB_CODE_CFG_NOT_FOUND); \ TAOS_RETURN(TSDB_CODE_CFG_NOT_FOUND); \
@ -447,6 +449,7 @@ int32_t taosSetS3Cfg(SConfig *pCfg) {
SConfigItem *pItem = NULL; SConfigItem *pItem = NULL;
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "s3BucketName"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "s3BucketName");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen("s3BucketName", pItem->str, TSDB_FQDN_LEN));
tstrncpy(tsS3BucketName, pItem->str, TSDB_FQDN_LEN); tstrncpy(tsS3BucketName, pItem->str, TSDB_FQDN_LEN);
for (int i = 0; i < tsS3EpNum; ++i) { for (int i = 0; i < tsS3EpNum; ++i) {
@ -1151,6 +1154,7 @@ static int32_t taosSetClientLogCfg(SConfig *pCfg) {
SConfigItem *pItem = NULL; SConfigItem *pItem = NULL;
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "logDir"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "logDir");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, PATH_MAX));
tstrncpy(tsLogDir, pItem->str, PATH_MAX); tstrncpy(tsLogDir, pItem->str, PATH_MAX);
TAOS_CHECK_RETURN(taosExpandDir(tsLogDir, tsLogDir, PATH_MAX)); TAOS_CHECK_RETURN(taosExpandDir(tsLogDir, tsLogDir, PATH_MAX));
TAOS_CHECK_RETURN(taosSetLogOutput(pCfg)); TAOS_CHECK_RETURN(taosSetLogOutput(pCfg));
@ -1301,6 +1305,7 @@ static int32_t taosSetClientCfg(SConfig *pCfg) {
SConfigItem *pItem = NULL; SConfigItem *pItem = NULL;
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "fqdn"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "fqdn");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_FQDN_LEN));
tstrncpy(tsLocalFqdn, pItem->str, TSDB_FQDN_LEN); tstrncpy(tsLocalFqdn, pItem->str, TSDB_FQDN_LEN);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "forceReadConfig"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "forceReadConfig");
@ -1326,6 +1331,7 @@ static int32_t taosSetClientCfg(SConfig *pCfg) {
TAOS_CHECK_RETURN(cfgSetItem(pCfg, "secondEp", tsSecond, pItem->stype, true)); TAOS_CHECK_RETURN(cfgSetItem(pCfg, "secondEp", tsSecond, pItem->stype, true));
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "tempDir"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "tempDir");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, PATH_MAX));
tstrncpy(tsTempDir, pItem->str, PATH_MAX); tstrncpy(tsTempDir, pItem->str, PATH_MAX);
TAOS_CHECK_RETURN(taosExpandDir(tsTempDir, tsTempDir, PATH_MAX)); TAOS_CHECK_RETURN(taosExpandDir(tsTempDir, tsTempDir, PATH_MAX));
@ -1338,15 +1344,19 @@ static int32_t taosSetClientCfg(SConfig *pCfg) {
} }
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlAutoChildTableNameDelimiter"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlAutoChildTableNameDelimiter");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_TABLE_NAME_LEN));
tstrncpy(tsSmlAutoChildTableNameDelimiter, pItem->str, TSDB_TABLE_NAME_LEN); tstrncpy(tsSmlAutoChildTableNameDelimiter, pItem->str, TSDB_TABLE_NAME_LEN);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlChildTableName"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlChildTableName");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_TABLE_NAME_LEN));
tstrncpy(tsSmlChildTableName, pItem->str, TSDB_TABLE_NAME_LEN); tstrncpy(tsSmlChildTableName, pItem->str, TSDB_TABLE_NAME_LEN);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlTagName"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlTagName");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_COL_NAME_LEN));
tstrncpy(tsSmlTagName, pItem->str, TSDB_COL_NAME_LEN); tstrncpy(tsSmlTagName, pItem->str, TSDB_COL_NAME_LEN);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlTsDefaultName"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlTsDefaultName");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_COL_NAME_LEN));
tstrncpy(tsSmlTsDefaultName, pItem->str, TSDB_COL_NAME_LEN); tstrncpy(tsSmlTsDefaultName, pItem->str, TSDB_COL_NAME_LEN);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlDot2Underline"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "smlDot2Underline");
@ -1493,9 +1503,11 @@ static int32_t taosSetServerCfg(SConfig *pCfg) {
tsQueryBufferSize = pItem->i32; tsQueryBufferSize = pItem->i32;
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "encryptAlgorithm"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "encryptAlgorithm");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, 16));
tstrncpy(tsEncryptAlgorithm, pItem->str, 16); tstrncpy(tsEncryptAlgorithm, pItem->str, 16);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "encryptScope"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "encryptScope");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, 100));
tstrncpy(tsEncryptScope, pItem->str, 100); tstrncpy(tsEncryptScope, pItem->str, 100);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "numOfRpcThreads"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "numOfRpcThreads");
@ -1559,6 +1571,7 @@ static int32_t taosSetServerCfg(SConfig *pCfg) {
tsTagFilterCache = (bool)pItem->bval; tsTagFilterCache = (bool)pItem->bval;
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "slowLogExceptDb"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "slowLogExceptDb");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_DB_NAME_LEN));
tstrncpy(tsSlowLogExceptDb, pItem->str, TSDB_DB_NAME_LEN); tstrncpy(tsSlowLogExceptDb, pItem->str, TSDB_DB_NAME_LEN);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "slowLogThreshold"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "slowLogThreshold");
@ -1579,6 +1592,7 @@ static int32_t taosSetServerCfg(SConfig *pCfg) {
tsMonitorInterval = pItem->i32; tsMonitorInterval = pItem->i32;
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "monitorFqdn"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "monitorFqdn");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_FQDN_LEN));
tstrncpy(tsMonitorFqdn, pItem->str, TSDB_FQDN_LEN); tstrncpy(tsMonitorFqdn, pItem->str, TSDB_FQDN_LEN);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "monitorPort"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "monitorPort");
@ -1630,12 +1644,15 @@ static int32_t taosSetServerCfg(SConfig *pCfg) {
tsRsyncPort = pItem->i32; tsRsyncPort = pItem->i32;
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "telemetryServer"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "telemetryServer");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_FQDN_LEN));
tstrncpy(tsTelemServer, pItem->str, TSDB_FQDN_LEN); tstrncpy(tsTelemServer, pItem->str, TSDB_FQDN_LEN);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "snodeAddress"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "snodeAddress");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_FQDN_LEN));
tstrncpy(tsSnodeAddress, pItem->str, TSDB_FQDN_LEN); tstrncpy(tsSnodeAddress, pItem->str, TSDB_FQDN_LEN);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "checkpointBackupDir"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "checkpointBackupDir");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, PATH_MAX));
tstrncpy(tsCheckpointBackupDir, pItem->str, PATH_MAX); tstrncpy(tsCheckpointBackupDir, pItem->str, PATH_MAX);
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "telemetryPort"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "telemetryPort");
@ -1726,9 +1743,11 @@ static int32_t taosSetServerCfg(SConfig *pCfg) {
tsStartUdfd = pItem->bval; tsStartUdfd = pItem->bval;
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "udfdResFuncs"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "udfdResFuncs");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, sizeof(tsUdfdResFuncs)));
tstrncpy(tsUdfdResFuncs, pItem->str, sizeof(tsUdfdResFuncs)); tstrncpy(tsUdfdResFuncs, pItem->str, sizeof(tsUdfdResFuncs));
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "udfdLdLibPath"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "udfdLdLibPath");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, sizeof(tsUdfdLdLibPath)));
tstrncpy(tsUdfdLdLibPath, pItem->str, sizeof(tsUdfdLdLibPath)); tstrncpy(tsUdfdLdLibPath, pItem->str, sizeof(tsUdfdLdLibPath));
if (tsQueryBufferSize >= 0) { if (tsQueryBufferSize >= 0) {
tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL; tsQueryBufferSizeBytes = tsQueryBufferSize * 1048576UL;
@ -1753,6 +1772,7 @@ static int32_t taosSetServerCfg(SConfig *pCfg) {
tsIfAdtFse = pItem->bval; tsIfAdtFse = pItem->bval;
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "compressor"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "compressor");
TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, sizeof(tsCompressor)));
tstrncpy(tsCompressor, pItem->str, sizeof(tsCompressor)); tstrncpy(tsCompressor, pItem->str, sizeof(tsCompressor));
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "disableStream"); TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "disableStream");
@ -2293,9 +2313,15 @@ static int32_t taosCfgSetOption(OptionNameAndVar *pOptions, int32_t optionSize,
case CFG_DTYPE_LOCALE: case CFG_DTYPE_LOCALE:
case CFG_DTYPE_CHARSET: case CFG_DTYPE_CHARSET:
case CFG_DTYPE_TIMEZONE: { case CFG_DTYPE_TIMEZONE: {
char *pVar = pOptions[d].optionVar; if (strcasecmp(pItem->name, "slowLogExceptDb") == 0) {
tstrncpy(pVar, pItem->str, strlen(pItem->str)); TAOS_CHECK_RETURN(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_DB_NAME_LEN));
uInfo("%s set to %s", optName, pVar); tstrncpy(tsSlowLogExceptDb, pItem->str, TSDB_DB_NAME_LEN);
} else {
uError("not support string type for %s", optName);
code = TSDB_CODE_INVALID_CFG;
break;
}
uInfo("%s set to %s", optName, pItem->str);
} break; } break;
default: default:
code = TSDB_CODE_INVALID_CFG; code = TSDB_CODE_INVALID_CFG;
@ -2437,9 +2463,6 @@ static int32_t taosCfgDynamicOptionsForServer(SConfig *pCfg, const char *name) {
{"ttlFlushThreshold", &tsTtlFlushThreshold}, {"ttlFlushThreshold", &tsTtlFlushThreshold},
{"ttlPushInterval", &tsTtlPushIntervalSec}, {"ttlPushInterval", &tsTtlPushIntervalSec},
{"ttlUnit", &tsTtlUnit}, {"ttlUnit", &tsTtlUnit},
{"s3Accesskey", &tsS3AccessKey},
{"s3BucketName", &tsS3BucketName},
{"s3Endpoint", &tsS3Endpoint},
{"s3MigrateIntervalSec", &tsS3MigrateIntervalSec}, {"s3MigrateIntervalSec", &tsS3MigrateIntervalSec},
{"s3MigrateEnabled", &tsS3MigrateEnabled}, {"s3MigrateEnabled", &tsS3MigrateEnabled},
//{"s3BlockSize", &tsS3BlockSize}, //{"s3BlockSize", &tsS3BlockSize},
@ -2608,18 +2631,22 @@ static int32_t taosCfgDynamicOptionsForClient(SConfig *pCfg, const char *name) {
uInfo("%s set to %s", name, tsSecond); uInfo("%s set to %s", name, tsSecond);
matched = true; matched = true;
} else if (strcasecmp("smlChildTableName", name) == 0) { } else if (strcasecmp("smlChildTableName", name) == 0) {
TAOS_CHECK_GOTO(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_TABLE_NAME_LEN), &lino, _out);
uInfo("%s set from %s to %s", name, tsSmlChildTableName, pItem->str); uInfo("%s set from %s to %s", name, tsSmlChildTableName, pItem->str);
tstrncpy(tsSmlChildTableName, pItem->str, TSDB_TABLE_NAME_LEN); tstrncpy(tsSmlChildTableName, pItem->str, TSDB_TABLE_NAME_LEN);
matched = true; matched = true;
} else if (strcasecmp("smlAutoChildTableNameDelimiter", name) == 0) { } else if (strcasecmp("smlAutoChildTableNameDelimiter", name) == 0) {
TAOS_CHECK_GOTO(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_TABLE_NAME_LEN), &lino, _out);
uInfo("%s set from %s to %s", name, tsSmlAutoChildTableNameDelimiter, pItem->str); uInfo("%s set from %s to %s", name, tsSmlAutoChildTableNameDelimiter, pItem->str);
tstrncpy(tsSmlAutoChildTableNameDelimiter, pItem->str, TSDB_TABLE_NAME_LEN); tstrncpy(tsSmlAutoChildTableNameDelimiter, pItem->str, TSDB_TABLE_NAME_LEN);
matched = true; matched = true;
} else if (strcasecmp("smlTagName", name) == 0) { } else if (strcasecmp("smlTagName", name) == 0) {
TAOS_CHECK_GOTO(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_COL_NAME_LEN), &lino, _out);
uInfo("%s set from %s to %s", name, tsSmlTagName, pItem->str); uInfo("%s set from %s to %s", name, tsSmlTagName, pItem->str);
tstrncpy(tsSmlTagName, pItem->str, TSDB_COL_NAME_LEN); tstrncpy(tsSmlTagName, pItem->str, TSDB_COL_NAME_LEN);
matched = true; matched = true;
} else if (strcasecmp("smlTsDefaultName", name) == 0) { } else if (strcasecmp("smlTsDefaultName", name) == 0) {
TAOS_CHECK_GOTO(taosCheckCfgStrValueLen(pItem->name, pItem->str, TSDB_COL_NAME_LEN), &lino, _out);
uInfo("%s set from %s to %s", name, tsSmlTsDefaultName, pItem->str); uInfo("%s set from %s to %s", name, tsSmlTsDefaultName, pItem->str);
tstrncpy(tsSmlTsDefaultName, pItem->str, TSDB_COL_NAME_LEN); tstrncpy(tsSmlTsDefaultName, pItem->str, TSDB_COL_NAME_LEN);
matched = true; matched = true;
@ -2633,6 +2660,7 @@ static int32_t taosCfgDynamicOptionsForClient(SConfig *pCfg, const char *name) {
goto _out; goto _out;
} }
TAOS_CHECK_GOTO(taosCheckCfgStrValueLen(pFqdnItem->name, pFqdnItem->str, TSDB_FQDN_LEN), &lino, _out);
tstrncpy(tsLocalFqdn, pFqdnItem->str, TSDB_FQDN_LEN); tstrncpy(tsLocalFqdn, pFqdnItem->str, TSDB_FQDN_LEN);
tsServerPort = (uint16_t)pServerPortItem->i32; tsServerPort = (uint16_t)pServerPortItem->i32;
(void)snprintf(tsLocalEp, sizeof(tsLocalEp), "%s:%u", tsLocalFqdn, tsServerPort); (void)snprintf(tsLocalEp, sizeof(tsLocalEp), "%s:%u", tsLocalFqdn, tsServerPort);
@ -2654,6 +2682,7 @@ static int32_t taosCfgDynamicOptionsForClient(SConfig *pCfg, const char *name) {
} }
case 't': { case 't': {
if (strcasecmp("tempDir", name) == 0) { if (strcasecmp("tempDir", name) == 0) {
TAOS_CHECK_GOTO(taosCheckCfgStrValueLen(pItem->name, pItem->str, PATH_MAX), &lino, _out);
uInfo("%s set from %s to %s", name, tsTempDir, pItem->str); uInfo("%s set from %s to %s", name, tsTempDir, pItem->str);
tstrncpy(tsTempDir, pItem->str, PATH_MAX); tstrncpy(tsTempDir, pItem->str, PATH_MAX);
TAOS_CHECK_GOTO(taosExpandDir(tsTempDir, tsTempDir, PATH_MAX), &lino, _out); TAOS_CHECK_GOTO(taosExpandDir(tsTempDir, tsTempDir, PATH_MAX), &lino, _out);
@ -3221,3 +3250,11 @@ bool isConifgItemLazyMode(SConfigItem *item) {
} }
return false; return false;
} }
int32_t taosCheckCfgStrValueLen(const char *name, const char *value, int32_t len) {
if (strlen(value) > len) {
uError("invalid config:%s, value:%s, length should be less than %d", name, value, len);
TAOS_RETURN(TSDB_CODE_INVALID_CFG_VALUE);
}
TAOS_RETURN(TSDB_CODE_SUCCESS);
}