audk/MdeModulePkg/Core/Dxe
Laszlo Ersek b9bdfc7285 MdeModulePkg/Core/Dxe: assert SectionInstance invariant in FindChildNode()
FindChildNode() has two callers: GetSection(), and FindChildNode() itself.

- At the GetSection() call site, a positive (i.e., nonzero)
  SectionInstance is passed. This is because GetSection() takes a
  zero-based (UINTN) SectionInstance, and then passes
  Instance=(SectionInstance+1) to FindChildNode().

- For reaching the recursive FindChildNode() call site, a section type
  mismatch, or a section instance mismatch, is necessary. This means,
  respectively, that SectionInstance will either not have been decreased,
  or not to zero anyway, at the recursive FindChildNode() call site.

Add two ASSERT()s to FindChildNode(), for expressing the (SectionSize>0)
invariant.

In turn, the invariant provides the explanation why, after the recursive
call, a zero SectionInstance implies success. Capture it in a comment.

Cc: Dandan Bi <dandan.bi@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20201119105340.16225-2-lersek@redhat.com>
2020-11-21 01:40:53 +00:00
..
Dispatcher MdeModulePkg DxeCore: Fix typo in function name 2019-10-17 09:09:02 +08:00
DxeMain MdeModulePkg/Core/Dxe: log memory base and length, after lib ctors again 2020-11-06 20:37:22 +00:00
Event MdeModulePkg: document workaround for EFI_RUNTIME_EVENT_ENTRY PI spec bug 2019-10-09 09:40:09 +02:00
FwVol MdeModulePkg/Core: Support standalone MM in FV2 protocol GetNextFile(). 2020-10-29 05:29:42 +00:00
FwVolBlock MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
Gcd MdeModulePkg/Gcd: Check memory allocation when initializing memory 2020-11-05 03:37:37 +00:00
Hand MdeModulePkg: Make retval in UninstallMultipleProtocol follow Spec 2020-02-19 14:43:25 +00:00
Image MdeModulePkg/DxeCore: defer PE/COFF emulator registration to StartImage 2020-03-04 09:26:45 +00:00
Library MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
Mem MdeModulePkg/Core/Dxe: expose SP and CRYPTO capabilities in UEFI memmap 2020-10-10 04:04:50 +00:00
Misc MdeModulePkg: Add New Memory Attributes 2020-07-15 14:58:25 +00:00
SectionExtraction MdeModulePkg/Core/Dxe: assert SectionInstance invariant in FindChildNode() 2020-11-21 01:40:53 +00:00
DxeCore.uni MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeCoreExtra.uni MdeModulePkg: Replace BSD License with BSD+Patent License 2019-04-09 10:58:08 -07:00
DxeMain.h MdeModulePkg/DxeCore: merge properties table routines into MAT handling 2020-04-07 08:15:46 +00:00
DxeMain.inf MdeModulePkg/DxeCore: merge properties table routines into MAT handling 2020-04-07 08:15:46 +00:00