From af0ca38a897fa5d63e71f24ab1427007b73c0436 Mon Sep 17 00:00:00 2001 From: dmchen Date: Thu, 4 May 2023 17:12:02 +0800 Subject: [PATCH 1/6] int16 overflow --- include/util/taoserror.h | 1 + source/dnode/mnode/impl/src/mndStb.c | 20 ++++++++++++++++++++ source/util/src/terror.c | 1 + 3 files changed, 22 insertions(+) diff --git a/include/util/taoserror.h b/include/util/taoserror.h index ab89466a19..3847757d9d 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -261,6 +261,7 @@ int32_t* taosGetErrno(); // #define TSDB_CODE_MND_INVALID_STABLE_NAME TAOS_DEF_ERROR_CODE(0, 0x036D) // 2.x #define TSDB_CODE_MND_INVALID_STB_OPTION TAOS_DEF_ERROR_CODE(0, 0x036E) #define TSDB_CODE_MND_INVALID_ROW_BYTES TAOS_DEF_ERROR_CODE(0, 0x036F) +#define TSDB_CODE_MND_BIG_FIELD_VALUE TAOS_DEF_ERROR_CODE(0, 0x0370) // mnode-func diff --git a/source/dnode/mnode/impl/src/mndStb.c b/source/dnode/mnode/impl/src/mndStb.c index 63bcef2a5b..939080be47 100644 --- a/source/dnode/mnode/impl/src/mndStb.c +++ b/source/dnode/mnode/impl/src/mndStb.c @@ -797,6 +797,11 @@ int32_t mndBuildStbFromReq(SMnode *pMnode, SStbObj *pDst, SMCreateStbReq *pCreat return -1; } + if(pDst->nextColId > 0 && pDst->nextColId < 0x7fff - pDst->numOfColumns - pDst->numOfTags){ + terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; + return -1; + } + for (int32_t i = 0; i < pDst->numOfColumns; ++i) { SField *pField = taosArrayGet(pCreate->pColumns, i); SSchema *pSchema = &pDst->pColumns[i]; @@ -927,6 +932,11 @@ static int32_t mndBuildStbFromAlter(SStbObj *pStb, SStbObj *pDst, SMCreateStbReq return -1; } + if(pDst->nextColId > 0 && pDst->nextColId < 0x7fff - pDst->numOfColumns - pDst->numOfTags){ + terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; + return -1; + } + for (int32_t i = 0; i < pDst->numOfColumns; ++i) { SField *pField = taosArrayGet(createReq->pColumns, i); SSchema *pSchema = &pDst->pColumns[i]; @@ -1154,6 +1164,11 @@ static int32_t mndAddSuperTableTag(const SStbObj *pOld, SStbObj *pNew, SArray *p return -1; } + if(pNew->nextColId > 0 && pNew->nextColId < 0x7fff - ntags){ + terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; + return -1; + } + for (int32_t i = 0; i < ntags; i++) { SField *pField = taosArrayGet(pFields, i); if (mndFindSuperTableColumnIndex(pOld, pField->name) >= 0) { @@ -1461,6 +1476,11 @@ static int32_t mndAddSuperTableColumn(const SStbObj *pOld, SStbObj *pNew, SArray return -1; } + if(pNew->nextColId > 0 && pNew->nextColId < 0x7fff - ncols){ + terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; + return -1; + } + for (int32_t i = 0; i < ncols; i++) { SField *pField = taosArrayGet(pFields, i); if (mndFindSuperTableColumnIndex(pOld, pField->name) >= 0) { diff --git a/source/util/src/terror.c b/source/util/src/terror.c index 002d605793..f3aff1a200 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -203,6 +203,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_COLUMN_ALREADY_EXIST, "Column already exists TAOS_DEFINE_ERROR(TSDB_CODE_MND_COLUMN_NOT_EXIST, "Column does not exist") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_STB_OPTION, "Invalid stable options") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_ROW_BYTES, "Invalid row bytes") +TAOS_DEFINE_ERROR(TSDB_CODE_MND_BIG_FIELD_VALUE, "out of range and overflow") // mnode-func TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_FUNC_NAME, "Invalid func name") From 766b752c18e83d1ef91e7b44b433023ed5fb7f0c Mon Sep 17 00:00:00 2001 From: dmchen Date: Thu, 4 May 2023 18:35:37 +0800 Subject: [PATCH 2/6] if statement for overflow --- source/dnode/mnode/impl/src/mndStb.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndStb.c b/source/dnode/mnode/impl/src/mndStb.c index 939080be47..3407d4a1dc 100644 --- a/source/dnode/mnode/impl/src/mndStb.c +++ b/source/dnode/mnode/impl/src/mndStb.c @@ -797,7 +797,7 @@ int32_t mndBuildStbFromReq(SMnode *pMnode, SStbObj *pDst, SMCreateStbReq *pCreat return -1; } - if(pDst->nextColId > 0 && pDst->nextColId < 0x7fff - pDst->numOfColumns - pDst->numOfTags){ + if(pDst->nextColId < 0 || pDst->nextColId >= 0x7fff - pDst->numOfColumns - pDst->numOfTags){ terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; return -1; } @@ -932,7 +932,7 @@ static int32_t mndBuildStbFromAlter(SStbObj *pStb, SStbObj *pDst, SMCreateStbReq return -1; } - if(pDst->nextColId > 0 && pDst->nextColId < 0x7fff - pDst->numOfColumns - pDst->numOfTags){ + if(pDst->nextColId < 0 && pDst->nextColId >= 0x7fff - pDst->numOfColumns - pDst->numOfTags){ terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; return -1; } @@ -1164,7 +1164,7 @@ static int32_t mndAddSuperTableTag(const SStbObj *pOld, SStbObj *pNew, SArray *p return -1; } - if(pNew->nextColId > 0 && pNew->nextColId < 0x7fff - ntags){ + if(pNew->nextColId < 0 && pNew->nextColId >= 0x7fff - ntags){ terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; return -1; } @@ -1476,7 +1476,7 @@ static int32_t mndAddSuperTableColumn(const SStbObj *pOld, SStbObj *pNew, SArray return -1; } - if(pNew->nextColId > 0 && pNew->nextColId < 0x7fff - ncols){ + if(pNew->nextColId < 0 && pNew->nextColId >= 0x7fff - ncols){ terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; return -1; } From ee0e0b4ad4ad28fa9b8da5d0b466616f189ce13d Mon Sep 17 00:00:00 2001 From: dm chen Date: Fri, 5 May 2023 17:46:24 +0800 Subject: [PATCH 3/6] Update taoserror.h --- include/util/taoserror.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/util/taoserror.h b/include/util/taoserror.h index 3847757d9d..2b116f0c82 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -261,7 +261,7 @@ int32_t* taosGetErrno(); // #define TSDB_CODE_MND_INVALID_STABLE_NAME TAOS_DEF_ERROR_CODE(0, 0x036D) // 2.x #define TSDB_CODE_MND_INVALID_STB_OPTION TAOS_DEF_ERROR_CODE(0, 0x036E) #define TSDB_CODE_MND_INVALID_ROW_BYTES TAOS_DEF_ERROR_CODE(0, 0x036F) -#define TSDB_CODE_MND_BIG_FIELD_VALUE TAOS_DEF_ERROR_CODE(0, 0x0370) +#define TSDB_CODE_MND_FIELD_VALUE_OVERFLOW TAOS_DEF_ERROR_CODE(0, 0x0370) // mnode-func From 59f103a4772d15999c20eb9c97bcbf8ed42c72d8 Mon Sep 17 00:00:00 2001 From: dm chen Date: Fri, 5 May 2023 17:47:32 +0800 Subject: [PATCH 4/6] Update mndStb.c --- source/dnode/mnode/impl/src/mndStb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dnode/mnode/impl/src/mndStb.c b/source/dnode/mnode/impl/src/mndStb.c index 3407d4a1dc..6b3b69e003 100644 --- a/source/dnode/mnode/impl/src/mndStb.c +++ b/source/dnode/mnode/impl/src/mndStb.c @@ -798,7 +798,7 @@ int32_t mndBuildStbFromReq(SMnode *pMnode, SStbObj *pDst, SMCreateStbReq *pCreat } if(pDst->nextColId < 0 || pDst->nextColId >= 0x7fff - pDst->numOfColumns - pDst->numOfTags){ - terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; + terrno = TSDB_CODE_MND_FIELD_VALUE_OVERFLOW; return -1; } From 4242f2c4ccfa09af7079f672083c0b37c9c5a637 Mon Sep 17 00:00:00 2001 From: dm chen Date: Fri, 5 May 2023 17:49:27 +0800 Subject: [PATCH 5/6] Update mndStb.c --- source/dnode/mnode/impl/src/mndStb.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndStb.c b/source/dnode/mnode/impl/src/mndStb.c index 6b3b69e003..21e2bbaf92 100644 --- a/source/dnode/mnode/impl/src/mndStb.c +++ b/source/dnode/mnode/impl/src/mndStb.c @@ -933,7 +933,7 @@ static int32_t mndBuildStbFromAlter(SStbObj *pStb, SStbObj *pDst, SMCreateStbReq } if(pDst->nextColId < 0 && pDst->nextColId >= 0x7fff - pDst->numOfColumns - pDst->numOfTags){ - terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; + terrno = TSDB_CODE_MND_FIELD_VALUE_OVERFLOW; return -1; } @@ -1165,7 +1165,7 @@ static int32_t mndAddSuperTableTag(const SStbObj *pOld, SStbObj *pNew, SArray *p } if(pNew->nextColId < 0 && pNew->nextColId >= 0x7fff - ntags){ - terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; + terrno = TSDB_CODE_MND_FIELD_VALUE_OVERFLOW; return -1; } @@ -1477,7 +1477,7 @@ static int32_t mndAddSuperTableColumn(const SStbObj *pOld, SStbObj *pNew, SArray } if(pNew->nextColId < 0 && pNew->nextColId >= 0x7fff - ncols){ - terrno = TSDB_CODE_MND_BIG_FIELD_VALUE; + terrno = TSDB_CODE_MND_FIELD_VALUE_OVERFLOW; return -1; } From 87696d8ab313a91fa8a7ffe515ed9f15b8b2d64c Mon Sep 17 00:00:00 2001 From: dm chen Date: Fri, 5 May 2023 17:50:06 +0800 Subject: [PATCH 6/6] Update terror.c --- source/util/src/terror.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/util/src/terror.c b/source/util/src/terror.c index f3aff1a200..a875f1d209 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -203,7 +203,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_COLUMN_ALREADY_EXIST, "Column already exists TAOS_DEFINE_ERROR(TSDB_CODE_MND_COLUMN_NOT_EXIST, "Column does not exist") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_STB_OPTION, "Invalid stable options") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_ROW_BYTES, "Invalid row bytes") -TAOS_DEFINE_ERROR(TSDB_CODE_MND_BIG_FIELD_VALUE, "out of range and overflow") +TAOS_DEFINE_ERROR(TSDB_CODE_MND_FIELD_VALUE_OVERFLOW, "out of range and overflow") // mnode-func TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_FUNC_NAME, "Invalid func name")