Flag in LABEL() is not valid C variable name, will report error.
Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
RetList.append(Item)\r
return RetList\r
\r
RetList.append(Item)\r
return RetList\r
\r
+def IsValidCString(Str):\r
+ ValidString = re.compile(r'[_a-zA-Z][_0-9a-zA-Z]*$')\r
+ if not ValidString.match(Str):\r
+ return False\r
+ return True\r
+\r
## ReplaceExprMacro\r
#\r
def ReplaceExprMacro(String, Macros, ExceptionList = None):\r
## ReplaceExprMacro\r
#\r
def ReplaceExprMacro(String, Macros, ExceptionList = None):\r
for Index, Item in enumerate(PcdValueList):\r
# compute byte offset of every LABEL\r
Item = Item.strip()\r
for Index, Item in enumerate(PcdValueList):\r
# compute byte offset of every LABEL\r
Item = Item.strip()\r
- try:\r
- LabelList = ReLabel.findall(Item)\r
+ LabelList = ReLabel.findall(Item)\r
+ if LabelList:\r
for Label in LabelList:\r
for Label in LabelList:\r
+ if not IsValidCString(Label):\r
+ raise BadExpression('%s is not a valid c variable name' % Label)\r
if Label not in LabelDict.keys():\r
LabelDict[Label] = str(LabelOffset)\r
if Label not in LabelDict.keys():\r
LabelDict[Label] = str(LabelOffset)\r
if Item.startswith('UINT8'):\r
LabelOffset = LabelOffset + 1\r
elif Item.startswith('UINT16'):\r
if Item.startswith('UINT8'):\r
LabelOffset = LabelOffset + 1\r
elif Item.startswith('UINT16'):\r