summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAshraf Ali S <ashraf.ali.s@intel.com>2025-01-12 18:22:52 +0530
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2025-01-27 16:26:18 +0000
commit6d2143f685087ac94d871a26af017248e57888df (patch)
treed1ba08647e0d546cdaf039dddb213489e9812ba5
parent8c1e786e506474bae02f81b48a5644afb324d1bb (diff)
downloadedk2-6d2143f685087ac94d871a26af017248e57888df.tar.gz
BaseTools: Fix NoneType parent reference in FMMT operations
This patch addresses an issue in the FMMT operations where the parent reference is not checked for NoneType. This oversight can lead to an AttributeError: 'NoneType' object has no attribute 'Name' when attempting to access the parent reference. The fix involves adding a check for NoneType before accessing the parent reference to ensure that the operations handle such cases gracefully. The affected functions include: - AddNewFfs - ReplaceFfs - ExtractFfs These functions now include proper checks to prevent the AttributeError. Signed-off-by: Ashraf Ali S <ashraf.ali.s@intel.com>
-rw-r--r--BaseTools/Source/Python/FMMT/core/FMMTOperation.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/BaseTools/Source/Python/FMMT/core/FMMTOperation.py b/BaseTools/Source/Python/FMMT/core/FMMTOperation.py
index d4aa339703..4ed976d5fb 100644
--- a/BaseTools/Source/Python/FMMT/core/FMMTOperation.py
+++ b/BaseTools/Source/Python/FMMT/core/FMMTOperation.py
@@ -65,7 +65,10 @@ def DeleteFfs(inputfile: str, TargetFfs_name: str, outputfile: str, Fv_name: str
if Fv_name:
FindNum = len(FmmtParser.WholeFvTree.Findlist)
for index in range(FindNum-1, -1, -1):
- if FmmtParser.WholeFvTree.Findlist[index].Parent.key != Fv_name and FmmtParser.WholeFvTree.Findlist[index].Parent.Data.Name != Fv_name:
+ parent = FmmtParser.WholeFvTree.Findlist[index].Parent
+ if parent is None or parent.Data is None:
+ continue
+ if parent.key != Fv_name and parent.Data.Name != Fv_name:
FmmtParser.WholeFvTree.Findlist.remove(FmmtParser.WholeFvTree.Findlist[index])
Status = False
if FmmtParser.WholeFvTree.Findlist != []:
@@ -152,7 +155,10 @@ def ReplaceFfs(inputfile: str, Ffs_name: str, newffsfile: str, outputfile: str,
if Fv_name:
FindNum = len(FmmtParser.WholeFvTree.Findlist)
for index in range(FindNum-1, -1, -1):
- if FmmtParser.WholeFvTree.Findlist[index].Parent.key != Fv_name and FmmtParser.WholeFvTree.Findlist[index].Parent.Data.Name != Fv_name:
+ parent = FmmtParser.WholeFvTree.Findlist[index].Parent
+ if parent is None or parent.Data is None:
+ continue
+ if parent.key != Fv_name and parent.Data.Name != Fv_name:
FmmtParser.WholeFvTree.Findlist.remove(FmmtParser.WholeFvTree.Findlist[index])
if FmmtParser.WholeFvTree.Findlist != []:
for TargetFfs in FmmtParser.WholeFvTree.Findlist:
@@ -184,7 +190,10 @@ def ExtractFfs(inputfile: str, Ffs_name: str, outputfile: str, Fv_name: str=None
if Fv_name:
FindNum = len(FmmtParser.WholeFvTree.Findlist)
for index in range(FindNum-1, -1, -1):
- if FmmtParser.WholeFvTree.Findlist[index].Parent.key != Fv_name and FmmtParser.WholeFvTree.Findlist[index].Parent.Data.Name != Fv_name:
+ parent = FmmtParser.WholeFvTree.Findlist[index].Parent
+ if parent is None or parent.Data is None:
+ continue
+ if parent.key != Fv_name and parent.Data.Name != Fv_name:
FmmtParser.WholeFvTree.Findlist.remove(FmmtParser.WholeFvTree.Findlist[index])
if FmmtParser.WholeFvTree.Findlist != []:
TargetNode = FmmtParser.WholeFvTree.Findlist[0]