[edk2] [Patch] BaseTools: Add DefaultStore section format Check

Yonghong Zhu posted 1 patch 6 years, 11 months ago
Failed in applying to current master (apply log)
BaseTools/Source/Python/Workspace/DscBuildData.py   | 8 ++++++++
BaseTools/Source/Python/Workspace/MetaFileParser.py | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
[edk2] [Patch] BaseTools: Add DefaultStore section format Check
Posted by Yonghong Zhu 6 years, 11 months ago
This patch add DefaultStore section format Check and it use same logic
with SKUID section.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
---
 BaseTools/Source/Python/Workspace/DscBuildData.py   | 8 ++++++++
 BaseTools/Source/Python/Workspace/MetaFileParser.py | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py
index 752fe05..16fe608 100644
--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
@@ -606,10 +606,18 @@ class DscBuildData(PlatformBuildClassObject):
                     EdkLogger.error('build', FORMAT_INVALID, 'No DefaultStores ID number',
                                     File=self.MetaFile, Line=Record[-1])
                 if Record[1] in [None, '']:
                     EdkLogger.error('build', FORMAT_INVALID, 'No DefaultStores ID name',
                                     File=self.MetaFile, Line=Record[-1])
+                Pattern = re.compile('^[1-9]\d*|0$')
+                HexPattern = re.compile(r'0[xX][0-9a-fA-F]+$')
+                if Pattern.match(Record[0]) == None and HexPattern.match(Record[0]) == None:
+                    EdkLogger.error('build', FORMAT_INVALID, "The format of the DefaultStores ID number is invalid. It only support Integer and HexNumber",
+                                    File=self.MetaFile, Line=Record[-1])
+                if not IsValidWord(Record[1]):
+                    EdkLogger.error('build', FORMAT_INVALID, "The format of the DefaultStores ID name is invalid. The correct format is '(a-zA-Z0-9_)(a-zA-Z0-9_-.)*'",
+                                    File=self.MetaFile, Line=Record[-1])
                 self.DefaultStores[Record[1].upper()] = (self.ToInt(Record[0]),Record[1].upper())
             if TAB_DEFAULT_STORES_DEFAULT not in self.DefaultStores:
                 self.DefaultStores[TAB_DEFAULT_STORES_DEFAULT] = (0,TAB_DEFAULT_STORES_DEFAULT)
             GlobalData.gDefaultStores = self.DefaultStores.keys()
             if GlobalData.gDefaultStores:
diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py b/BaseTools/Source/Python/Workspace/MetaFileParser.py
index e236732..202093a 100644
--- a/BaseTools/Source/Python/Workspace/MetaFileParser.py
+++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py
@@ -1103,11 +1103,11 @@ class DscParser(MetaFileParser):
         self._ValueList[0:len(TokenList)] = TokenList
     @ParseMacro
     def _DefaultStoresParser(self):
         TokenList = GetSplitValueList(self._CurrentLine, TAB_VALUE_SPLIT)
         if len(TokenList) != 2:
-            EdkLogger.error('Parser', FORMAT_INVALID, "Correct format is '<Integer>|<UiName>'",
+            EdkLogger.error('Parser', FORMAT_INVALID, "Correct format is '<Number>|<UiName>'",
                             ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex + 1)
         self._ValueList[0:len(TokenList)] = TokenList
 
     ## Parse Edk style of library modules
     @ParseMacro
-- 
2.6.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [Patch] BaseTools: Add DefaultStore section format Check
Posted by Gao, Liming 6 years, 11 months ago
Reviewed-by: Liming Gao <liming.gao@intel.com>

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Yonghong Zhu
> Sent: Monday, January 22, 2018 1:48 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [Patch] BaseTools: Add DefaultStore section format Check
> 
> This patch add DefaultStore section format Check and it use same logic
> with SKUID section.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
> ---
>  BaseTools/Source/Python/Workspace/DscBuildData.py   | 8 ++++++++
>  BaseTools/Source/Python/Workspace/MetaFileParser.py | 2 +-
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py
> index 752fe05..16fe608 100644
> --- a/BaseTools/Source/Python/Workspace/DscBuildData.py
> +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
> @@ -606,10 +606,18 @@ class DscBuildData(PlatformBuildClassObject):
>                      EdkLogger.error('build', FORMAT_INVALID, 'No DefaultStores ID number',
>                                      File=self.MetaFile, Line=Record[-1])
>                  if Record[1] in [None, '']:
>                      EdkLogger.error('build', FORMAT_INVALID, 'No DefaultStores ID name',
>                                      File=self.MetaFile, Line=Record[-1])
> +                Pattern = re.compile('^[1-9]\d*|0$')
> +                HexPattern = re.compile(r'0[xX][0-9a-fA-F]+$')
> +                if Pattern.match(Record[0]) == None and HexPattern.match(Record[0]) == None:
> +                    EdkLogger.error('build', FORMAT_INVALID, "The format of the DefaultStores ID number is invalid. It only
> support Integer and HexNumber",
> +                                    File=self.MetaFile, Line=Record[-1])
> +                if not IsValidWord(Record[1]):
> +                    EdkLogger.error('build', FORMAT_INVALID, "The format of the DefaultStores ID name is invalid. The correct
> format is '(a-zA-Z0-9_)(a-zA-Z0-9_-.)*'",
> +                                    File=self.MetaFile, Line=Record[-1])
>                  self.DefaultStores[Record[1].upper()] = (self.ToInt(Record[0]),Record[1].upper())
>              if TAB_DEFAULT_STORES_DEFAULT not in self.DefaultStores:
>                  self.DefaultStores[TAB_DEFAULT_STORES_DEFAULT] = (0,TAB_DEFAULT_STORES_DEFAULT)
>              GlobalData.gDefaultStores = self.DefaultStores.keys()
>              if GlobalData.gDefaultStores:
> diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py b/BaseTools/Source/Python/Workspace/MetaFileParser.py
> index e236732..202093a 100644
> --- a/BaseTools/Source/Python/Workspace/MetaFileParser.py
> +++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py
> @@ -1103,11 +1103,11 @@ class DscParser(MetaFileParser):
>          self._ValueList[0:len(TokenList)] = TokenList
>      @ParseMacro
>      def _DefaultStoresParser(self):
>          TokenList = GetSplitValueList(self._CurrentLine, TAB_VALUE_SPLIT)
>          if len(TokenList) != 2:
> -            EdkLogger.error('Parser', FORMAT_INVALID, "Correct format is '<Integer>|<UiName>'",
> +            EdkLogger.error('Parser', FORMAT_INVALID, "Correct format is '<Number>|<UiName>'",
>                              ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex + 1)
>          self._ValueList[0:len(TokenList)] = TokenList
> 
>      ## Parse Edk style of library modules
>      @ParseMacro
> --
> 2.6.1.windows.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel