From 1a19f1f5f685616178d37692922f8581188186e8 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Tue, 19 Jul 2022 21:00:00 +0800 Subject: [PATCH] fix: float overflow check --- source/libs/parser/src/parTranslater.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 3d840a9374..026328be24 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -858,11 +858,18 @@ static EDealRes translateNormalValue(STranslateContext* pCxt, SValueNode* pVal, } case TSDB_DATA_TYPE_FLOAT: { pVal->datum.d = taosStr2Double(pVal->literal, NULL); + if (strict && !IS_VALID_FLOAT(pVal->datum.d)) { + return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, pVal->literal); + } *(float*)&pVal->typeData = pVal->datum.d; break; } case TSDB_DATA_TYPE_DOUBLE: { pVal->datum.d = taosStr2Double(pVal->literal, NULL); + if (strict && (((pVal->datum.d == HUGE_VAL || pVal->datum.d == -HUGE_VAL) && errno == ERANGE) || + isinf(pVal->datum.d) || isnan(pVal->datum.d))) { + return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, pVal->literal); + } *(double*)&pVal->typeData = pVal->datum.d; break; }