Replace unsafe string functions with new added safe string functions.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <lubo.zhang@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Qiu Shumin <shumin.qiu@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17887
6f19259b-4bc3-4df7-8a09-
765794883524
12 files changed:
/** @file\r
The implementation for Shell application IfConfig6.\r
\r
/** @file\r
The implementation for Shell application IfConfig6.\r
\r
- Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
ARG_LIST *ArgList;\r
ARG_LIST *ArgNode;\r
\r
ARG_LIST *ArgList;\r
ARG_LIST *ArgNode;\r
\r
- if (*String == L'\0') {\r
+ if (*String == L'\0' || *String == NULL) {\r
return NULL;\r
}\r
\r
//\r
// Copy the CONST string to a local copy.\r
//\r
return NULL;\r
}\r
\r
//\r
// Copy the CONST string to a local copy.\r
//\r
- Str = (CHAR16 *) AllocateZeroPool (StrSize (String));\r
+ Str = AllocateCopyPool (StrSize (String), String);\r
- Str = StrnCpy (Str, String, StrLen (String));\r
Private->OpCode = IfConfig6OpList;\r
ValueStr = ShellCommandLineGetValue (ParamPackage, L"-l");\r
if (ValueStr != NULL) {\r
Private->OpCode = IfConfig6OpList;\r
ValueStr = ShellCommandLineGetValue (ParamPackage, L"-l");\r
if (ValueStr != NULL) {\r
- Str = (CHAR16 *) AllocateZeroPool (StrSize (ValueStr));\r
+ Str = AllocateCopyPool (StrSize (ValueStr), ValueStr);\r
-\r
- Str = StrnCpy (Str, ValueStr, StrLen (ValueStr));\r
Private->IfName = Str;\r
}\r
}\r
Private->IfName = Str;\r
}\r
}\r
Private->OpCode = IfConfig6OpClear;\r
ValueStr = ShellCommandLineGetValue (ParamPackage, L"-r");\r
if (ValueStr != NULL) {\r
Private->OpCode = IfConfig6OpClear;\r
ValueStr = ShellCommandLineGetValue (ParamPackage, L"-r");\r
if (ValueStr != NULL) {\r
- Str = (CHAR16 *) AllocateZeroPool (StrSize (ValueStr));\r
+ Str = AllocateCopyPool (StrSize (ValueStr), ValueStr);\r
-\r
- Str = StrnCpy (Str, ValueStr, StrLen (ValueStr));\r
Private->IfName = Str;\r
}\r
}\r
Private->IfName = Str;\r
}\r
}\r
/** @file\r
The implementation of construct ENTRY_INDEXER in IpSecConfig application.\r
\r
/** @file\r
The implementation of construct ENTRY_INDEXER in IpSecConfig application.\r
\r
- Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
Indexer->PadId.PeerIdValid = TRUE;\r
ZeroMem (Indexer->PadId.Id.PeerId, MAX_PEERID_LEN);\r
\r
Indexer->PadId.PeerIdValid = TRUE;\r
ZeroMem (Indexer->PadId.Id.PeerId, MAX_PEERID_LEN);\r
- StrnCpy ((CHAR16 *) Indexer->PadId.Id.PeerId, ValueStr, ARRAY_SIZE (Indexer->PadId.Id.PeerId) - 1);\r
+ StrnCpyS ((CHAR16 *) Indexer->PadId.Id.PeerId, MAX_PEERID_LEN / sizeof (CHAR16), ValueStr, MAX_PEERID_LEN / sizeof (CHAR16) - 1);\r
/** @file\r
The implementation of policy entry operation function in IpSecConfig application.\r
\r
/** @file\r
The implementation of policy entry operation function in IpSecConfig application.\r
\r
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
ValueStr = ShellCommandLineGetValue (ParamPackage, L"--peer-id");\r
if (ValueStr != NULL) {\r
(*PadId)->PeerIdValid = TRUE;\r
ValueStr = ShellCommandLineGetValue (ParamPackage, L"--peer-id");\r
if (ValueStr != NULL) {\r
(*PadId)->PeerIdValid = TRUE;\r
- StrnCpy ((CHAR16 *) (*PadId)->Id.PeerId, ValueStr, ARRAY_SIZE ((*PadId)->Id.PeerId) - 1);\r
+ StrnCpyS ((CHAR16 *) (*PadId)->Id.PeerId, MAX_PEERID_LEN / sizeof (CHAR16), ValueStr, MAX_PEERID_LEN / sizeof (CHAR16) - 1);\r
*Mask |= PEER_ID;\r
}\r
\r
*Mask |= PEER_ID;\r
}\r
\r
// Process Data\r
//\r
if ((Mask & NAME) != 0) {\r
// Process Data\r
//\r
if ((Mask & NAME) != 0) {\r
- AsciiStrCpy ((CHAR8 *) OldData->Name, (CHAR8 *) NewData->Name);\r
+ AsciiStrCpyS ((CHAR8 *) OldData->Name, MAX_PEERID_LEN, (CHAR8 *) NewData->Name);\r
}\r
\r
if ((Mask & PACKET_FLAG) != 0) {\r
}\r
\r
if ((Mask & PACKET_FLAG) != 0) {\r
- AsciiStrCpy (Private->Current->SessionConfigData.TargetName, IScsiName);\r
+ AsciiStrCpyS (Private->Current->SessionConfigData.TargetName, ISCSI_NAME_MAX_SIZE, IScsiName);\r
- AsciiStrCpy (ConfigNvData->TargetName, Field->Str);\r
+ AsciiStrCpyS (ConfigNvData->TargetName, ISCSI_NAME_MAX_SIZE, Field->Str);\r
/** @file\r
iSCSI DHCP6 related configuration routines.\r
\r
/** @file\r
iSCSI DHCP6 related configuration routines.\r
\r
-Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
- AsciiStrCpy (ConfigNvData->TargetName, Field->Str);\r
+ AsciiStrCpyS (ConfigNvData->TargetName, ISCSI_NAME_MAX_SIZE, Field->Str);\r
/** @file\r
The implementation of EFI_EXT_SCSI_PASS_THRU_PROTOCOL.\r
\r
/** @file\r
The implementation of EFI_EXT_SCSI_PASS_THRU_PROTOCOL.\r
\r
-Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
\r
CopyMem (&Node->Iscsi.Lun, ConfigNvData->BootLun, sizeof (UINT64));\r
Node->Iscsi.TargetPortalGroupTag = Session->TargetPortalGroupTag;\r
\r
CopyMem (&Node->Iscsi.Lun, ConfigNvData->BootLun, sizeof (UINT64));\r
Node->Iscsi.TargetPortalGroupTag = Session->TargetPortalGroupTag;\r
- AsciiStrCpy ((CHAR8 *) Node + sizeof (ISCSI_DEVICE_PATH), ConfigNvData->TargetName);\r
+ AsciiStrCpyS ((CHAR8 *) Node + sizeof (ISCSI_DEVICE_PATH), AsciiStrLen (ConfigNvData->TargetName) + 1, ConfigNvData->TargetName);\r
\r
*DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) Node;\r
\r
\r
*DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) Node;\r
\r
/** @file\r
Mtftp6 support functions implementation.\r
\r
/** @file\r
Mtftp6 support functions implementation.\r
\r
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
Packet->OpCode = HTONS (Operation);\r
Cur = Packet->Rrq.Filename;\r
\r
Packet->OpCode = HTONS (Operation);\r
Cur = Packet->Rrq.Filename;\r
- Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Token->Filename);\r
+ Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len - 2, (CHAR8 *) Token->Filename);\r
Cur += AsciiStrLen ((CHAR8 *) Token->Filename) + 1;\r
Cur += AsciiStrLen ((CHAR8 *) Token->Filename) + 1;\r
- Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Mode);\r
+ Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len - 2 - (AsciiStrLen ((CHAR8 *) Token->Filename) + 1), (CHAR8 *) Mode);\r
Cur += AsciiStrLen ((CHAR8 *) Mode) + 1;\r
Cur += AsciiStrLen ((CHAR8 *) Mode) + 1;\r
+ Len -= ((UINT32) AsciiStrLen ((CHAR8 *) Token->Filename) + (UINT32) AsciiStrLen ((CHAR8 *) Mode) + 4);\r
\r
//\r
// Copy all the extension options into the packet.\r
//\r
for (Index = 0; Index < Token->OptionCount; ++Index) {\r
\r
//\r
// Copy all the extension options into the packet.\r
//\r
for (Index = 0; Index < Token->OptionCount; ++Index) {\r
- Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].OptionStr);\r
+ Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len, (CHAR8 *) Options[Index].OptionStr);\r
Cur += AsciiStrLen ((CHAR8 *) Options[Index].OptionStr) + 1;\r
Cur += AsciiStrLen ((CHAR8 *) Options[Index].OptionStr) + 1;\r
- Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].ValueStr);\r
+ Len -= (UINT32)(AsciiStrLen ((CHAR8 *) Options[Index].OptionStr) + 1);\r
+ Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len, (CHAR8 *) Options[Index].ValueStr);\r
Cur += AsciiStrLen ((CHAR8 *) (CHAR8 *) Options[Index].ValueStr) + 1;\r
Cur += AsciiStrLen ((CHAR8 *) (CHAR8 *) Options[Index].ValueStr) + 1;\r
+ Len -= (UINT32)(AsciiStrLen ((CHAR8 *) Options[Index].ValueStr) + 1);\r
TftpError->OpCode = HTONS (EFI_MTFTP6_OPCODE_ERROR);\r
TftpError->Error.ErrorCode = HTONS (ErrCode);\r
\r
TftpError->OpCode = HTONS (EFI_MTFTP6_OPCODE_ERROR);\r
TftpError->Error.ErrorCode = HTONS (ErrCode);\r
\r
- AsciiStrCpy ((CHAR8 *) TftpError->Error.ErrorMessage, (CHAR8 *) ErrInfo);\r
+ AsciiStrCpyS ((CHAR8 *) TftpError->Error.ErrorMessage, sizeof (TftpError->Error.ErrorMessage) / sizeof (TftpError->Error.ErrorMessage[0]), (CHAR8 *) ErrInfo);\r
\r
//\r
// Save the packet buf for retransmit\r
\r
//\r
// Save the packet buf for retransmit\r
/** @file\r
Functions implementation related with Mtftp for UefiPxeBc Driver.\r
\r
/** @file\r
Functions implementation related with Mtftp for UefiPxeBc Driver.\r
\r
- Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
//\r
Private->Mode.TftpErrorReceived = TRUE;\r
Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode;\r
//\r
Private->Mode.TftpErrorReceived = TRUE;\r
Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode;\r
Private->Mode.TftpError.ErrorString,\r
Private->Mode.TftpError.ErrorString,\r
+ PXE_MTFTP_ERROR_STRING_LENGTH,\r
(CHAR8 *) Packet->Error.ErrorMessage,\r
(CHAR8 *) Packet->Error.ErrorMessage,\r
- PXE_MTFTP_ERROR_STRING_LENGTH\r
+ PXE_MTFTP_ERROR_STRING_LENGTH - 1\r
);\r
Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0';\r
}\r
);\r
Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0';\r
}\r
// Build the required options for get info.\r
//\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX];\r
// Build the required options for get info.\r
//\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX];\r
- PxeBcUintnToAscDec (0, OptBuf);\r
+ PxeBcUintnToAscDec (0, OptBuf, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
ReqOpt[0].ValueStr = OptBuf;\r
\r
if (BlockSize != NULL) {\r
ReqOpt[1].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[1].ValueStr = (UINT8 *) (ReqOpt[0].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1);\r
ReqOpt[0].ValueStr = OptBuf;\r
\r
if (BlockSize != NULL) {\r
ReqOpt[1].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[1].ValueStr = (UINT8 *) (ReqOpt[0].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1);\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[1].ValueStr);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[1].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX - (AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1));\r
//\r
Private->Mode.TftpErrorReceived = TRUE;\r
Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode;\r
//\r
Private->Mode.TftpErrorReceived = TRUE;\r
Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode;\r
Private->Mode.TftpError.ErrorString,\r
Private->Mode.TftpError.ErrorString,\r
+ PXE_MTFTP_ERROR_STRING_LENGTH,\r
(CHAR8 *) Packet->Error.ErrorMessage,\r
(CHAR8 *) Packet->Error.ErrorMessage,\r
- PXE_MTFTP_ERROR_STRING_LENGTH\r
+ PXE_MTFTP_ERROR_STRING_LENGTH - 1\r
);\r
Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0';\r
}\r
);\r
Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0';\r
}\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
//\r
Private->Mode.TftpErrorReceived = TRUE;\r
Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode;\r
//\r
Private->Mode.TftpErrorReceived = TRUE;\r
Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode;\r
Private->Mode.TftpError.ErrorString,\r
Private->Mode.TftpError.ErrorString,\r
+ PXE_MTFTP_ERROR_STRING_LENGTH,\r
(CHAR8 *) Packet->Error.ErrorMessage,\r
(CHAR8 *) Packet->Error.ErrorMessage,\r
- PXE_MTFTP_ERROR_STRING_LENGTH\r
+ PXE_MTFTP_ERROR_STRING_LENGTH - 1\r
);\r
Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0';\r
}\r
);\r
Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0';\r
}\r
// Build the required options for get info.\r
//\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX];\r
// Build the required options for get info.\r
//\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX];\r
- PxeBcUintnToAscDec (0, OptBuf);\r
+ PxeBcUintnToAscDec (0, OptBuf, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
ReqOpt[0].ValueStr = OptBuf;\r
\r
if (BlockSize != NULL) {\r
ReqOpt[1].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[1].ValueStr = (UINT8 *) (ReqOpt[0].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1);\r
ReqOpt[0].ValueStr = OptBuf;\r
\r
if (BlockSize != NULL) {\r
ReqOpt[1].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[1].ValueStr = (UINT8 *) (ReqOpt[0].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1);\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[1].ValueStr);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[1].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX - (AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1));\r
//\r
Private->Mode.TftpErrorReceived = TRUE;\r
Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode;\r
//\r
Private->Mode.TftpErrorReceived = TRUE;\r
Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode;\r
Private->Mode.TftpError.ErrorString,\r
Private->Mode.TftpError.ErrorString,\r
+ PXE_MTFTP_ERROR_STRING_LENGTH,\r
(CHAR8 *) Packet->Error.ErrorMessage,\r
(CHAR8 *) Packet->Error.ErrorMessage,\r
- PXE_MTFTP_ERROR_STRING_LENGTH\r
+ PXE_MTFTP_ERROR_STRING_LENGTH - 1\r
);\r
Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0';\r
}\r
);\r
Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0';\r
}\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
if (BlockSize != NULL) {\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
/** @file\r
Functions declaration related with Mtftp for UefiPxeBc Driver.\r
\r
/** @file\r
Functions declaration related with Mtftp for UefiPxeBc Driver.\r
\r
- Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
#define PXE_MTFTP_OPTION_TSIZE_INDEX 2\r
#define PXE_MTFTP_OPTION_MULTICAST_INDEX 3\r
#define PXE_MTFTP_OPTION_MAXIMUM_INDEX 4\r
#define PXE_MTFTP_OPTION_TSIZE_INDEX 2\r
#define PXE_MTFTP_OPTION_MULTICAST_INDEX 3\r
#define PXE_MTFTP_OPTION_MAXIMUM_INDEX 4\r
+#define PXE_MTFTP_OPTBUF_MAXNUM_INDEX 128\r
\r
#define PXE_MTFTP_ERROR_STRING_LENGTH 127 // refer to definition of struct EFI_PXE_BASE_CODE_TFTP_ERROR.\r
#define PXE_MTFTP_DEFAULT_BLOCK_SIZE 512 // refer to rfc-1350.\r
\r
#define PXE_MTFTP_ERROR_STRING_LENGTH 127 // refer to definition of struct EFI_PXE_BASE_CODE_TFTP_ERROR.\r
#define PXE_MTFTP_DEFAULT_BLOCK_SIZE 512 // refer to rfc-1350.\r
/** @file\r
Support functions implementation for UefiPxeBc Driver.\r
\r
/** @file\r
Support functions implementation for UefiPxeBc Driver.\r
\r
- Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
@param[in] Number Numeric value to be converted.\r
@param[in] Buffer The pointer to the buffer for ASCII string.\r
\r
@param[in] Number Numeric value to be converted.\r
@param[in] Buffer The pointer to the buffer for ASCII string.\r
+ @param[in] BufferSize The maxsize of the buffer.\r
\r
@return Length The actual length of the ASCII string.\r
\r
\r
@return Length The actual length of the ASCII string.\r
\r
UINTN\r
PxeBcUintnToAscDec (\r
IN UINTN Number,\r
UINTN\r
PxeBcUintnToAscDec (\r
IN UINTN Number,\r
+ IN UINT8 *Buffer,\r
+ IN UINTN BufferSize\r
Number = (UINTN) (Number / 10);\r
} while (Number != 0);\r
\r
Number = (UINTN) (Number / 10);\r
} while (Number != 0);\r
\r
- AsciiStrCpy ((CHAR8 *) Buffer, &TempStr[Index]);\r
+ AsciiStrCpyS ((CHAR8 *) Buffer, BufferSize, &TempStr[Index]);\r
\r
Length = AsciiStrLen ((CHAR8 *) Buffer);\r
\r
\r
Length = AsciiStrLen ((CHAR8 *) Buffer);\r
\r
\r
@param[in] Number Numeric value to be converted.\r
@param[in] Buffer Pointer to the buffer for ASCII string.\r
\r
@param[in] Number Numeric value to be converted.\r
@param[in] Buffer Pointer to the buffer for ASCII string.\r
+ @param[in] BufferSize The maxsize of the buffer.\r
+ \r
@return Length The actual length of the ASCII string.\r
\r
**/\r
UINTN\r
PxeBcUintnToAscDec (\r
IN UINTN Number,\r
@return Length The actual length of the ASCII string.\r
\r
**/\r
UINTN\r
PxeBcUintnToAscDec (\r
IN UINTN Number,\r
+ IN UINT8 *Buffer,\r
+ IN UINTN BufferSize\r