BaseTools/VfrCompile: Add check for setting string default to number

It's illegal that string default is numeric type in vfr string definition.
This patch add a check to the illegal behavior. If numeric string default
is encountered, throw a invalid parameter error to break VfrCompile.

Cc: Chao Li <lichao@loongson.cn>
Signed-off-by: Gao Qihang <gaoqihang@loongson.cn>
This commit is contained in:
Gao Qihang
2025-07-25 09:42:49 +08:00
committed by mergify[bot]
parent d46aa46c83
commit 305e5845e6

View File

@ -2,6 +2,7 @@
Vfr Syntax
Copyright (c) 2004 - 2025, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2025, Loongson Technology Corporation Limited. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
--*/
@ -1618,7 +1619,7 @@ vfrConstantValueField[UINT8 Type, EFI_IFR_TYPE_VALUE &Value, BOOLEAN &ListType]
$Value.b = _STOU8(N1->getText(), N1->getLine());
break;
case EFI_IFR_TYPE_STRING :
$Value.string = _STOU16(N1->getText(), N1->getLine());
_PCATCH (VFR_RETURN_INVALID_PARAMETER, N1->getLine(), "string type can't be numeric constant.");
break;
case EFI_IFR_TYPE_TIME :
case EFI_IFR_TYPE_DATE :
@ -3127,7 +3128,7 @@ vfrStatementString :
UINT8 StringMaxSize;
>>
L:String << SObj.SetLineNo(L->getLine()); gIsStringOp = TRUE;>>
vfrQuestionHeader[SObj] ","
vfrQuestionHeader[SObj] "," << _GET_CURRQEST_VARTINFO().mVarType = EFI_IFR_TYPE_STRING;>>
{ F:FLAGS "=" vfrStringFlagsField[SObj, F->getLine()] "," }
{
Key "=" KN:Number "," << AssignQuestionKey (SObj, KN); >>