]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg/UefiHandleParsingLib: Fix issue to pass static code checker
authorRuiyu Ni <ruiyu.ni@intel.com>
Fri, 22 Jul 2016 02:09:53 +0000 (10:09 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Mon, 25 Jul 2016 02:20:13 +0000 (10:20 +0800)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c

index c9093955317a38eee1df6a6c21f0de0ce0d7ea75..3fb55df8cc14fc26269f3e49aa8a2865a8614d2a 100644 (file)
@@ -2421,6 +2421,7 @@ ParseHandleDatabaseByRelationshipWithType (
   *HandleType = AllocateZeroPool (*HandleCount * sizeof (UINTN));\r
   if (*HandleType == NULL) {\r
     SHELL_FREE_NON_NULL (*HandleBuffer);\r
+    *HandleCount = 0;\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
@@ -2678,7 +2679,9 @@ ParseHandleDatabaseByRelationship (
         // Allocate a handle buffer for the number of handles that matched the attributes in Mask\r
         //\r
         *MatchingHandleBuffer = AllocateZeroPool ((*MatchingHandleCount +1)* sizeof (EFI_HANDLE));\r
-        if (*MatchingHandleBuffer != NULL) {\r
+        if (*MatchingHandleBuffer == NULL) {\r
+          Status = EFI_OUT_OF_RESOURCES;\r
+        } else {\r
           for (HandleIndex = 0, *MatchingHandleCount = 0\r
                ;  HandleIndex < HandleCount\r
                ;  HandleIndex++\r
@@ -2697,7 +2700,7 @@ ParseHandleDatabaseByRelationship (
           (*MatchingHandleBuffer)[*MatchingHandleCount] = NULL;\r
 \r
           Status = EFI_SUCCESS;\r
-        } // *MatchingHandleBuffer != NULL (IF)\r
+        } // *MatchingHandleBuffer == NULL (ELSE)\r
       } // MacthingHandleBuffer == NULL (ELSE)\r
     } // *MatchingHandleCount  == 0 (ELSE)\r
   } // no error on ParseHandleDatabaseByRelationshipWithType\r
@@ -2710,6 +2713,9 @@ ParseHandleDatabaseByRelationship (
     FreePool (HandleType);\r
   }\r
 \r
+  ASSERT ((MatchingHandleBuffer == NULL) ||\r
+          (*MatchingHandleCount == 0 && *MatchingHandleBuffer == NULL) ||\r
+          (*MatchingHandleCount != 0 && *MatchingHandleBuffer != NULL));\r
   return Status;\r
 }\r
 \r
@@ -2801,6 +2807,9 @@ ParseHandleDatabaseForChildControllers(
   } else {\r
     FreePool(HandleBufferForReturn);\r
   }\r
+  ASSERT ((MatchingHandleBuffer == NULL) ||\r
+          (*MatchingHandleCount == 0 && *MatchingHandleBuffer == NULL) ||\r
+          (*MatchingHandleCount != 0 && *MatchingHandleBuffer != NULL));\r
 \r
   return (EFI_SUCCESS);\r
 }\r