From 8f03a041034c5080991f18d06325673915847cdb Mon Sep 17 00:00:00 2001 From: Jing Sima Date: Tue, 27 Aug 2024 10:29:50 +0800 Subject: [PATCH] fix:[TD-31654] fix heap-buffer-overflow caused by unintialized variable. --- source/libs/scalar/src/sclfunc.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/libs/scalar/src/sclfunc.c b/source/libs/scalar/src/sclfunc.c index ed55bde663..a1c80c7028 100644 --- a/source/libs/scalar/src/sclfunc.c +++ b/source/libs/scalar/src/sclfunc.c @@ -1591,16 +1591,14 @@ int32_t substrIdxFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam * SColumnInfoData *pInputData[3]; SColumnInfoData *pOutputData = pOutput[0].columnData; int32_t outputLen; - int32_t numOfRows; + int32_t numOfRows = 0; pInputData[0] = pInput[0].columnData; pInputData[1] = pInput[1].columnData; pInputData[2] = pInput[2].columnData; for (int32_t i = 0; i < inputNum; ++i) { - if (pInput[i].numOfRows > numOfRows) { - numOfRows = pInput[i].numOfRows; - } + numOfRows = TMAX(numOfRows, pInput[i].numOfRows); } outputLen = pInputData[0]->info.bytes; @@ -1619,9 +1617,13 @@ int32_t substrIdxFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam * for (int32_t i = 0; i < inputNum; ++i) { if (colDataIsNull_s(pInputData[i], k) || IS_NULL_TYPE(GET_PARAM_TYPE(&pInput[i]))) { colDataSetNULL(pOutputData, k); - continue; + hasNull = true; + break; } } + if (hasNull) { + continue; + } int32_t colIdx1 = (pInput[0].numOfRows == 1) ? 0 : k; int32_t colIdx2 = (pInput[1].numOfRows == 1) ? 0 : k;