MdeModulePkg: Update IP4 driver to check for NULL pointer before using.
authorFu Siyuan <siyuan.fu@intel.com>
Wed, 27 Jun 2018 01:16:04 +0000 (09:16 +0800)
committerFu Siyuan <siyuan.fu@intel.com>
Thu, 28 Jun 2018 07:29:56 +0000 (15:29 +0800)
Cc: Ye Ting <ting.ye@intel.com>
Cc: Wu Jiaxin <jiaxin.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>
MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Impl.c

index fa84a9b..6a26143 100644 (file)
@@ -682,7 +682,7 @@ Ip4ConfigProtocol (
     //\r
     if (IpSb->State == IP4_SERVICE_UNSTARTED) {\r
       //\r
-      // Trigger the EFI_IP4_CONFIG2_PROTOCOL to retrieve the\r
+      // Trigger the EFI_IP4_CONFIG2_PROTOCOL to retrieve the \r
       // default IPv4 address if it is not available yet.\r
       //\r
       Policy = IpSb->Ip4Config2Instance.Policy;\r
@@ -1048,11 +1048,8 @@ Ip4Groups (
   // is decreamented each time an address is removed..\r
   //\r
   for (Index = IpInstance->GroupCount; Index > 0 ; Index--) {\r
-    Group = 0;\r
-    if(IpInstance->Groups != NULL) {\r
-      Group = IpInstance->Groups[Index - 1];\r
-    }\r
-\r
+    ASSERT (IpInstance->Groups != NULL);\r
+    Group = IpInstance->Groups[Index - 1];\r
     if ((GroupAddress == NULL) || EFI_IP4_EQUAL (&Group, GroupAddress)) {\r
       if (EFI_ERROR (Ip4LeaveGroup (IpInstance, NTOHL (Group)))) {\r
         return EFI_DEVICE_ERROR;\r
@@ -1663,7 +1660,7 @@ EfiIp4Transmit (
     }\r
 \r
     RawHdrLen = (UINT8) (RawHdrLen << 2);\r
-\r
+    \r
     CopyMem (&Head, FirstFragment, IP4_MIN_HEADLEN);\r
 \r
     Ip4NtohHead (&Head);\r
@@ -2253,8 +2250,8 @@ Ip4SentPacketTicking (
 }\r
 \r
 /**\r
-  This heart beat timer of IP4 service instance times out all of its IP4 children's\r
-  received-but-not-delivered and transmitted-but-not-recycle packets, and provides\r
+  This heart beat timer of IP4 service instance times out all of its IP4 children's \r
+  received-but-not-delivered and transmitted-but-not-recycle packets, and provides \r
   time input for its IGMP protocol.\r
 \r
   @param[in]  Event                  The IP4 service instance's heart beat timer.\r
@@ -2272,17 +2269,17 @@ Ip4TimerTicking (
 \r
   IpSb = (IP4_SERVICE *) Context;\r
   NET_CHECK_SIGNATURE (IpSb, IP4_SERVICE_SIGNATURE);\r
-\r
+  \r
   Ip4PacketTimerTicking (IpSb);\r
   Ip4IgmpTicking (IpSb);\r
 }\r
 \r
 /**\r
-  This dedicated timer is used to poll underlying network media status. In case\r
-  of cable swap or wireless network switch, a new round auto configuration will\r
-  be initiated. The timer will signal the IP4 to run DHCP configuration again.\r
-  IP4 driver will free old IP address related resource, such as route table and\r
-  Interface, then initiate a DHCP process to acquire new IP, eventually create\r
+  This dedicated timer is used to poll underlying network media status. In case \r
+  of cable swap or wireless network switch, a new round auto configuration will \r
+  be initiated. The timer will signal the IP4 to run DHCP configuration again. \r
+  IP4 driver will free old IP address related resource, such as route table and \r
+  Interface, then initiate a DHCP process to acquire new IP, eventually create \r
   route table for new IP address.\r
 \r
   @param[in]  Event                  The IP4 service instance's heart beat timer.\r
@@ -2303,12 +2300,12 @@ Ip4TimerReconfigChecking (
 \r
   IpSb = (IP4_SERVICE *) Context;\r
   NET_CHECK_SIGNATURE (IpSb, IP4_SERVICE_SIGNATURE);\r
-\r
+  \r
   OldMediaPresent = IpSb->MediaPresent;\r
 \r
   //\r
-  // Get fresh mode data from MNP, since underlying media status may change.\r
-  // Here, it needs to mention that the MediaPresent can also be checked even if\r
+  // Get fresh mode data from MNP, since underlying media status may change. \r
+  // Here, it needs to mention that the MediaPresent can also be checked even if \r
   // EFI_NOT_STARTED returned while this MNP child driver instance isn't configured.\r
   //\r
   Status = IpSb->Mnp->GetModeData (IpSb->Mnp, NULL, &SnpModeData);\r
@@ -2323,8 +2320,8 @@ Ip4TimerReconfigChecking (
   if (!OldMediaPresent && IpSb->MediaPresent && (IpSb->Ip4Config2Instance.Policy == Ip4Config2PolicyDhcp)) {\r
     //\r
     // Signal the IP4 to run the dhcp configuration again. IP4 driver will free\r
-    // old IP address related resource, such as route table and Interface, then\r
-    // initiate a DHCP round to acquire new IP, eventually\r
+    // old IP address related resource, such as route table and Interface, then \r
+    // initiate a DHCP round to acquire new IP, eventually \r
     // create route table for new IP address.\r
     //\r
     if (IpSb->ReconfigEvent != NULL) {\r