NetworkPkg/IScsiDxe: Enhance the check for array boundary
authorShenglei Zhang <shenglei.zhang@intel.com>
Fri, 24 Apr 2020 09:11:07 +0000 (17:11 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Sun, 26 Apr 2020 06:20:32 +0000 (06:20 +0000)
Array 'TargetUrl' of size 255 may use index value(s) 255 and 256.
So enhance the boundary check to ensure the index is valid.

Cc: Maciej Rabeda <maciej.rabeda@linux.intel.com>
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
Cc: Siyuan Fu <siyuan.fu@intel.com>
Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com>
Reviewed-by: Siyuan Fu <siyuan.fu@intel.com>
NetworkPkg/IScsiDxe/IScsiDhcp.c
NetworkPkg/IScsiDxe/IScsiDhcp6.c

index 7ce9bf5..afa8a86 100644 (file)
@@ -122,7 +122,7 @@ IScsiDhcpExtractRootPath (
   //\r
   if ((!NET_IS_DIGIT (*(Field->Str))) && (*(Field->Str) != '[')) {\r
     ConfigNvData->DnsMode = TRUE;\r
-    if (Field->Len > sizeof (ConfigNvData->TargetUrl)) {\r
+    if ((Field->Len + 2) > sizeof (ConfigNvData->TargetUrl)) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
     CopyMem (&ConfigNvData->TargetUrl, Field->Str, Field->Len);\r
index 86a872a..691650b 100644 (file)
@@ -161,7 +161,7 @@ IScsiDhcp6ExtractRootPath (
   // Server name is expressed as domain name, just save it.\r
   //\r
   if (ConfigNvData->DnsMode) {\r
-    if (Field->Len > sizeof (ConfigNvData->TargetUrl)) {\r
+    if ((Field->Len + 2) > sizeof (ConfigNvData->TargetUrl)) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
     CopyMem (&ConfigNvData->TargetUrl, Field->Str, Field->Len);\r