]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OptionRomPkg/UndiRuntimeDxe/E100b.c
Refine some code to make code run safely.
[mirror_edk2.git] / OptionRomPkg / UndiRuntimeDxe / E100b.c
index 6f953c319532cb40cad4d201ce696c669630c4d3..41308ba6fdafa361d799c5cdc892d164561d18de 100644 (file)
@@ -517,7 +517,8 @@ Configure (
   UINT8 my_filter;\r
 \r
   cmd_ptr   = GetFreeCB (AdapterInfo);\r
-  data_ptr  = (UINT8 *) (&cmd_ptr->PhysTBDArrayAddres);\r
+  ASSERT (cmd_ptr != NULL);\r
+  data_ptr  = (UINT8 *) cmd_ptr + sizeof (struct CB_Header);\r
 \r
   //\r
   // start the config data right after the command header\r
@@ -588,7 +589,8 @@ E100bSetupIAAddr (
   eaddrs    = (UINT16 *) AdapterInfo->CurrentNodeAddress;\r
 \r
   cmd_ptr   = GetFreeCB (AdapterInfo);\r
-  data_ptr  = (UINT16 *) (&cmd_ptr->PhysTBDArrayAddres);\r
+  ASSERT (cmd_ptr != NULL);\r
+  data_ptr  = (UINT16 *) ((UINT8 *) cmd_ptr +sizeof (struct CB_Header));\r
 \r
   //\r
   // AVOID a bug (?!) here by marking the command already completed.\r
@@ -1022,6 +1024,7 @@ E100bTransmit (
 \r
   tx_ptr_1  = (PXE_CPB_TRANSMIT *) (UINTN) cpb;\r
   tx_ptr_f  = (PXE_CPB_TRANSMIT_FRAGMENTS *) (UINTN) cpb;\r
+  Tmp_ptr = 0;\r
 \r
   //\r
   // stop reentrancy here\r
@@ -1387,7 +1390,7 @@ E100bReadEepromAndStationAddress (
   // in words\r
   //\r
   AdapterInfo->NVData_Len = eeprom_len = (UINT16) (1 << addr_len);\r
-  for (Index2 = 0, Index = 0; Index < eeprom_len; Index++) {\r
+  for (Index2 = 0, Index = 0; ((Index2 < PXE_MAC_LENGTH - 1) && (Index < eeprom_len)); Index++) {\r
     UINT16  value;\r
     value         = E100bReadEeprom (AdapterInfo, Index, addr_len);\r
     eedata[Index] = value;\r
@@ -2258,7 +2261,7 @@ E100bStatistics (
                   AdapterInfo->statistics->tx_lost_carrier;\r
 \r
   if (DBsize > sizeof db) {\r
-    DBsize = sizeof db;\r
+    DBsize = (UINT16) sizeof (db);\r
   }\r
 \r
   CopyMem ((VOID *) (UINTN) DBaddr, (VOID *) &db, (UINTN) DBsize);\r