MdeModulePkg: Fix a bug that return type differs from the left one when assigned.

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: jiaxinwu <jiaxin.wu@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17922 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Zhang Lubo 2015-07-10 06:57:22 +00:00 committed by luobozhang
parent 7c6c4ac801
commit 6b6fe3e9aa

View File

@ -278,13 +278,16 @@ Mtftp4SendRequest (
EFI_MTFTP4_PACKET *Packet; EFI_MTFTP4_PACKET *Packet;
EFI_MTFTP4_OPTION *Options; EFI_MTFTP4_OPTION *Options;
EFI_MTFTP4_TOKEN *Token; EFI_MTFTP4_TOKEN *Token;
RETURN_STATUS Status;
NET_BUF *Nbuf; NET_BUF *Nbuf;
UINT8 *Mode; UINT8 *Mode;
UINT8 *Cur; UINT8 *Cur;
UINT32 Len;
UINTN Index; UINTN Index;
UINT32 Len1; UINT32 BufferLength;
UINT32 Len2; UINTN FileNameLength;
UINTN ModeLength;
UINTN OptionStrLength;
UINTN ValueStrLength;
Token = Instance->Token; Token = Instance->Token;
Options = Token->OptionList; Options = Token->OptionList;
@ -297,42 +300,52 @@ Mtftp4SendRequest (
// //
// Compute the packet length // Compute the packet length
// //
Len1 = (UINT32) AsciiStrLen ((CHAR8 *) Token->Filename); FileNameLength = AsciiStrLen ((CHAR8 *) Token->Filename);
Len2 = (UINT32) AsciiStrLen ((CHAR8 *) Mode); ModeLength = AsciiStrLen ((CHAR8 *) Mode);
Len = (Len1 + Len2 + 4); BufferLength = (UINT32) FileNameLength + (UINT32) ModeLength + 4;
for (Index = 0; Index < Token->OptionCount; Index++) { for (Index = 0; Index < Token->OptionCount; Index++) {
Len1 = (UINT32) AsciiStrLen ((CHAR8 *) Options[Index].OptionStr); OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr);
Len2 = (UINT32) AsciiStrLen ((CHAR8 *) Options[Index].ValueStr); ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr);
Len += Len1 + Len2 + 2; BufferLength += (UINT32) OptionStrLength + (UINT32) ValueStrLength + 2;
} }
// //
// Allocate a packet then copy the data over // Allocate a packet then copy the data over
// //
if ((Nbuf = NetbufAlloc (Len)) == NULL) { if ((Nbuf = NetbufAlloc (BufferLength)) == NULL) {
return EFI_OUT_OF_RESOURCES; return EFI_OUT_OF_RESOURCES;
} }
Packet = (EFI_MTFTP4_PACKET *) NetbufAllocSpace (Nbuf, Len, FALSE); Packet = (EFI_MTFTP4_PACKET *) NetbufAllocSpace (Nbuf, BufferLength, FALSE);
ASSERT (Packet != NULL); ASSERT (Packet != NULL);
Packet->OpCode = HTONS (Instance->Operation); Packet->OpCode = HTONS (Instance->Operation);
BufferLength -= sizeof (Packet->OpCode);
Cur = Packet->Rrq.Filename; Cur = Packet->Rrq.Filename;
Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len - 2, (CHAR8 *) Token->Filename); Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Token->Filename);
Cur += AsciiStrLen ((CHAR8 *) Token->Filename) + 1; ASSERT_EFI_ERROR (Status);
Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len - 2 - (AsciiStrLen ((CHAR8 *) Token->Filename) + 1), (CHAR8 *) Mode); BufferLength -= (UINT32) (FileNameLength + 1);
Cur += AsciiStrLen ((CHAR8 *) Mode) + 1; Cur += FileNameLength + 1;
Len -= ((UINT32) AsciiStrLen ((CHAR8 *) Token->Filename) + (UINT32) AsciiStrLen ((CHAR8 *) Mode) + 4); Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Mode);
ASSERT_EFI_ERROR (Status);
BufferLength -= (UINT32) (ModeLength + 1);
Cur += ModeLength + 1;
for (Index = 0; Index < Token->OptionCount; ++Index) { for (Index = 0; Index < Token->OptionCount; ++Index) {
Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len, (CHAR8 *) Options[Index].OptionStr); OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr);
Cur += AsciiStrLen ((CHAR8 *) Options[Index].OptionStr) + 1; ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr);
Len -= (UINT32) AsciiStrLen ((CHAR8 *) Options[Index].OptionStr) + 1;
Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].OptionStr);
Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len, (CHAR8 *) Options[Index].ValueStr); ASSERT_EFI_ERROR (Status);
Cur += AsciiStrLen ((CHAR8 *) (CHAR8 *) Options[Index].ValueStr) + 1; BufferLength -= (UINT32) (OptionStrLength + 1);
Len -= (UINT32) AsciiStrLen ((CHAR8 *) (CHAR8 *) Options[Index].ValueStr) + 1; Cur += OptionStrLength + 1;
Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].ValueStr);
ASSERT_EFI_ERROR (Status);
BufferLength -= (UINT32) (ValueStrLength + 1);
Cur += ValueStrLength + 1;
} }
return Mtftp4SendPacket (Instance, Nbuf); return Mtftp4SendPacket (Instance, Nbuf);