]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
MdeModulePkg/DxeNetLib: Add array range check in NetIp6IsNetEqual().
[mirror_edk2.git] / MdeModulePkg / Library / DxeNetLib / DxeNetLib.c
index cbce28f1ba58fb1078b17f6299666f8536ce976b..90d2e3e64d86d1608e3050ecb933d90dfa34ddb1 100644 (file)
@@ -804,7 +804,7 @@ NetIp6IsLinkLocalAddr (
   Check whether the Ipv6 address1 and address2 are on the connected network.\r
 \r
   ASSERT if Ip1 or Ip2 is NULL.\r
-  ASSERT if PrefixLength exceeds IP6_PREFIX_MAX.\r
+  ASSERT if PrefixLength exceeds or equals to IP6_PREFIX_MAX.\r
 \r
   @param[in] Ip1          - Ip6 address1, in network order.\r
   @param[in] Ip2          - Ip6 address2, in network order.\r
@@ -826,7 +826,7 @@ NetIp6IsNetEqual (
   UINT8 Bit;\r
   UINT8 Mask;\r
 \r
-  ASSERT ((Ip1 != NULL) && (Ip2 != NULL) && (PrefixLength <= IP6_PREFIX_MAX));\r
+  ASSERT ((Ip1 != NULL) && (Ip2 != NULL) && (PrefixLength < IP6_PREFIX_MAX));\r
 \r
   if (PrefixLength == 0) {\r
     return TRUE;\r
@@ -842,6 +842,10 @@ NetIp6IsNetEqual (
   if (Bit > 0) {\r
     Mask = (UINT8) (0xFF << (8 - Bit));\r
 \r
+    ASSERT (Byte < 16);\r
+    if (Byte >= 16) {\r
+      return FALSE;\r
+    }\r
     if ((Ip1->Addr[Byte] & Mask) != (Ip2->Addr[Byte] & Mask)) {\r
       return FALSE;\r
     }\r