From ad25660f99ba22def3e4f4d99a212138cfdcdd57 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Fri, 10 Jun 2022 18:51:48 +0800 Subject: [PATCH] fix: avoid crash --- source/dnode/vnode/src/meta/metaQuery.c | 37 ++++++++++++++----------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/source/dnode/vnode/src/meta/metaQuery.c b/source/dnode/vnode/src/meta/metaQuery.c index 9d0b12b85f..a86da7aa26 100644 --- a/source/dnode/vnode/src/meta/metaQuery.c +++ b/source/dnode/vnode/src/meta/metaQuery.c @@ -623,23 +623,28 @@ int32_t metaFilteTableIds(SMeta *pMeta, SMetaFltParam *param, SArray *pUids) { int32_t nTagData = 0; void * tagData = NULL; - if (IS_VAR_DATA_TYPE(param->type)) { - tagData = varDataVal(param->val); - nTagData = varDataLen(param->val); - - if (param->type == TSDB_DATA_TYPE_NCHAR) { - maxSize = 4 * nTagData + 1; - buf = taosMemoryCalloc(1, maxSize); - if (false == taosMbsToUcs4(tagData, nTagData, (TdUcs4 *)buf, maxSize, &maxSize)) { - goto END; - } - - tagData = buf; - nTagData = maxSize; - } + if (param->val == NULL) { + metaError("vgId:%d failed to filter NULL data", PRIi64, TD_VID(pMeta->pVnode), uid, smaId); + return -1; } else { - tagData = param->val; - nTagData = tDataTypes[param->type].bytes; + if (IS_VAR_DATA_TYPE(param->type)) { + tagData = varDataVal(param->val); + nTagData = varDataLen(param->val); + + if (param->type == TSDB_DATA_TYPE_NCHAR) { + maxSize = 4 * nTagData + 1; + buf = taosMemoryCalloc(1, maxSize); + if (false == taosMbsToUcs4(tagData, nTagData, (TdUcs4 *)buf, maxSize, &maxSize)) { + goto END; + } + + tagData = buf; + nTagData = maxSize; + } + } else { + tagData = param->val; + nTagData = tDataTypes[param->type].bytes; + } } ret = metaCreateTagIdxKey(pCursor->suid, pCursor->cid, tagData, nTagData, pCursor->type, param->reverse ? INT64_MAX : INT64_MIN, &pKey, &nKey);