From 7c6c4ac801f0797ce6d6256ee446fc11f8a7e053 Mon Sep 17 00:00:00 2001 From: Zhang Lubo Date: Fri, 10 Jul 2015 06:50:41 +0000 Subject: NetworkPkg: Fix an error that return type differs from the left one when assigned. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zhang Lubo Reviewed-by: Fu Siyuan Reviewed-by: Qiu Shumin Reviewed-by: jiaxinwu git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17921 6f19259b-4bc3-4df7-8a09-765794883524 --- NetworkPkg/Mtftp6Dxe/Mtftp6Support.c | 59 ++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 22 deletions(-) (limited to 'NetworkPkg/Mtftp6Dxe') diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Support.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Support.c index 91680b2466..20888e8525 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Support.c +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Support.c @@ -452,13 +452,16 @@ Mtftp6SendRequest ( EFI_MTFTP6_PACKET *Packet; EFI_MTFTP6_OPTION *Options; EFI_MTFTP6_TOKEN *Token; + RETURN_STATUS Status; NET_BUF *Nbuf; UINT8 *Mode; UINT8 *Cur; - UINT32 Len1; - UINT32 Len2; - UINT32 Len; UINTN Index; + UINT32 BufferLength; + UINTN FileNameLength; + UINTN ModeLength; + UINTN OptionStrLength; + UINTN ValueStrLength; Token = Instance->Token; Options = Token->OptionList; @@ -487,47 +490,59 @@ Mtftp6SendRequest ( // // Compute the size of new Mtftp6 packet. // - Len1 = (UINT32) AsciiStrLen ((CHAR8 *) Token->Filename); - Len2 = (UINT32) AsciiStrLen ((CHAR8 *) Mode); - Len = Len1 + Len2 + 4; + FileNameLength = AsciiStrLen ((CHAR8 *) Token->Filename); + ModeLength = AsciiStrLen ((CHAR8 *) Mode); + BufferLength = (UINT32) FileNameLength + (UINT32) ModeLength + 4; for (Index = 0; Index < Token->OptionCount; Index++) { - Len1 = (UINT32) AsciiStrLen ((CHAR8 *) Options[Index].OptionStr); - Len2 = (UINT32) AsciiStrLen ((CHAR8 *) Options[Index].ValueStr); - Len += Len1 + Len2 + 2; + OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr); + ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr); + BufferLength += (UINT32) OptionStrLength + (UINT32) ValueStrLength + 2; } // // Allocate a packet then copy the data. // - if ((Nbuf = NetbufAlloc (Len)) == NULL) { + if ((Nbuf = NetbufAlloc (BufferLength)) == NULL) { return EFI_OUT_OF_RESOURCES; } // // Copy the opcode, filename and mode into packet. // - Packet = (EFI_MTFTP6_PACKET *) NetbufAllocSpace (Nbuf, Len, FALSE); + Packet = (EFI_MTFTP6_PACKET *) NetbufAllocSpace (Nbuf, BufferLength, FALSE); ASSERT (Packet != NULL); Packet->OpCode = HTONS (Operation); + BufferLength -= sizeof (Packet->OpCode); + Cur = Packet->Rrq.Filename; - Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len - 2, (CHAR8 *) Token->Filename); - Cur += AsciiStrLen ((CHAR8 *) Token->Filename) + 1; - Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len - 2 - (AsciiStrLen ((CHAR8 *) Token->Filename) + 1), (CHAR8 *) Mode); - Cur += AsciiStrLen ((CHAR8 *) Mode) + 1; - Len -= ((UINT32) AsciiStrLen ((CHAR8 *) Token->Filename) + (UINT32) AsciiStrLen ((CHAR8 *) Mode) + 4); + Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Token->Filename); + ASSERT_EFI_ERROR (Status); + BufferLength -= (UINT32) (FileNameLength + 1); + Cur += FileNameLength + 1; + Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Mode); + ASSERT_EFI_ERROR (Status); + BufferLength -= (UINT32) (ModeLength + 1); + Cur += ModeLength + 1; // // Copy all the extension options into the packet. // for (Index = 0; Index < Token->OptionCount; ++Index) { - Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len, (CHAR8 *) Options[Index].OptionStr); - Cur += AsciiStrLen ((CHAR8 *) Options[Index].OptionStr) + 1; - Len -= (UINT32)(AsciiStrLen ((CHAR8 *) Options[Index].OptionStr) + 1); - Cur = (UINT8 *) AsciiStrCpyS ((CHAR8 *) Cur, Len, (CHAR8 *) Options[Index].ValueStr); - Cur += AsciiStrLen ((CHAR8 *) (CHAR8 *) Options[Index].ValueStr) + 1; - Len -= (UINT32)(AsciiStrLen ((CHAR8 *) Options[Index].ValueStr) + 1); + OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr); + ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr); + + Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].OptionStr); + ASSERT_EFI_ERROR (Status); + BufferLength -= (UINT32) (OptionStrLength + 1); + Cur += OptionStrLength + 1; + + Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].ValueStr); + ASSERT_EFI_ERROR (Status); + BufferLength -= (UINT32) (ValueStrLength + 1); + Cur += ValueStrLength + 1; + } // -- cgit v1.2.3