The change doesn't impact the functionality.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
//\r
// Uintn won't exceed MAX_UINT16 if number of hexadecimal digit characters is no more than 4.\r
//\r
//\r
// Uintn won't exceed MAX_UINT16 if number of hexadecimal digit characters is no more than 4.\r
//\r
+ ASSERT (AddressIndex + 1 < ARRAY_SIZE (Address->Addr));\r
LocalAddress.Addr[AddressIndex] = (UINT8) ((UINT16) Uintn >> 8);\r
LocalAddress.Addr[AddressIndex + 1] = (UINT8) Uintn;\r
AddressIndex += 2;\r
LocalAddress.Addr[AddressIndex] = (UINT8) ((UINT16) Uintn >> 8);\r
LocalAddress.Addr[AddressIndex + 1] = (UINT8) Uintn;\r
AddressIndex += 2;\r
}\r
CopyMem (&Address->Addr[0], &LocalAddress.Addr[0], CompressStart);\r
ZeroMem (&Address->Addr[CompressStart], ARRAY_SIZE (Address->Addr) - AddressIndex);\r
}\r
CopyMem (&Address->Addr[0], &LocalAddress.Addr[0], CompressStart);\r
ZeroMem (&Address->Addr[CompressStart], ARRAY_SIZE (Address->Addr) - AddressIndex);\r
- CopyMem (\r
- &Address->Addr[CompressStart + ARRAY_SIZE (Address->Addr) - AddressIndex],\r
- &LocalAddress.Addr[CompressStart],\r
- AddressIndex - CompressStart\r
- );\r
+ if (AddressIndex > CompressStart) {\r
+ CopyMem (\r
+ &Address->Addr[CompressStart + ARRAY_SIZE (Address->Addr) - AddressIndex],\r
+ &LocalAddress.Addr[CompressStart],\r
+ AddressIndex - CompressStart\r
+ );\r
+ }\r
\r
if (PrefixLength != NULL) {\r
*PrefixLength = LocalPrefixLength;\r
\r
if (PrefixLength != NULL) {\r
*PrefixLength = LocalPrefixLength;\r
//\r
// Uintn won't exceed MAX_UINT16 if number of hexadecimal digit characters is no more than 4.\r
//\r
//\r
// Uintn won't exceed MAX_UINT16 if number of hexadecimal digit characters is no more than 4.\r
//\r
+ ASSERT (AddressIndex + 1 < ARRAY_SIZE (Address->Addr));\r
LocalAddress.Addr[AddressIndex] = (UINT8) ((UINT16) Uintn >> 8);\r
LocalAddress.Addr[AddressIndex + 1] = (UINT8) Uintn;\r
AddressIndex += 2;\r
LocalAddress.Addr[AddressIndex] = (UINT8) ((UINT16) Uintn >> 8);\r
LocalAddress.Addr[AddressIndex + 1] = (UINT8) Uintn;\r
AddressIndex += 2;\r
}\r
CopyMem (&Address->Addr[0], &LocalAddress.Addr[0], CompressStart);\r
ZeroMem (&Address->Addr[CompressStart], ARRAY_SIZE (Address->Addr) - AddressIndex);\r
}\r
CopyMem (&Address->Addr[0], &LocalAddress.Addr[0], CompressStart);\r
ZeroMem (&Address->Addr[CompressStart], ARRAY_SIZE (Address->Addr) - AddressIndex);\r
- CopyMem (\r
- &Address->Addr[CompressStart + ARRAY_SIZE (Address->Addr) - AddressIndex],\r
- &LocalAddress.Addr[CompressStart],\r
- AddressIndex - CompressStart\r
- );\r
+ if (AddressIndex > CompressStart) {\r
+ CopyMem (\r
+ &Address->Addr[CompressStart + ARRAY_SIZE (Address->Addr) - AddressIndex],\r
+ &LocalAddress.Addr[CompressStart],\r
+ AddressIndex - CompressStart\r
+ );\r\r
+ }\r
\r
if (PrefixLength != NULL) {\r
*PrefixLength = LocalPrefixLength;\r
\r
if (PrefixLength != NULL) {\r
*PrefixLength = LocalPrefixLength;\r