]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c
fixed one bug when calculate the string length.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Mtftp4Dxe / Mtftp4Support.c
index af61c0bf6978266a92b9175454f68bf093dffa50..7cdbddc32d1b495be429b86aa9deb92590269a5b 100644 (file)
@@ -229,7 +229,7 @@ Mtftp4RemoveBlockNum (
       if (Range->End == Num) {\r
         Range->End--;\r
       } else {\r
-        NewRange = Mtftp4AllocateRange (Num + 1, (UINT16) Range->End);\r
+        NewRange = Mtftp4AllocateRange ((UINT16) (Num + 1), (UINT16) Range->End);\r
 \r
         if (NewRange == NULL) {\r
           return EFI_OUT_OF_RESOURCES;\r
@@ -270,23 +270,28 @@ Mtftp4SendRequest (
   UINT8                     *Cur;\r
   UINT32                    Len;\r
   UINTN                     Index;\r
+  UINT32                    Len1;\r
+  UINT32                    Len2;\r
 \r
   Token   = Instance->Token;\r
   Options = Token->OptionList;\r
   Mode    = Instance->Token->ModeStr;\r
 \r
   if (Mode == NULL) {\r
-    Mode = "octet";\r
+    Mode = (UINT8 *) "octet";\r
   }\r
 \r
   //\r
   // Compute the packet length\r
   //\r
-  Len = (UINT32) (AsciiStrLen (Token->Filename) + AsciiStrLen (Mode) + 4);\r
+  Len1 = (UINT32) AsciiStrLen ((CHAR8 *) Token->Filename);\r
+  Len2 = (UINT32) AsciiStrLen ((CHAR8 *) Mode);\r
+  Len  = (Len1 + Len2 + 4);\r
 \r
   for (Index = 0; Index < Token->OptionCount; Index++) {\r
-    Len += (UINT32) (AsciiStrLen (Options[Index].OptionStr) +\r
-                     AsciiStrLen (Options[Index].ValueStr) + 2);\r
+    Len1 = (UINT32) AsciiStrLen ((CHAR8 *) Options[Index].OptionStr);\r
+    Len2 = (UINT32) AsciiStrLen ((CHAR8 *) Options[Index].ValueStr);\r
+    Len += Len1 + Len2 + 2;\r
   }\r
 \r
   //\r
@@ -299,12 +304,17 @@ Mtftp4SendRequest (
   Packet         = (EFI_MTFTP4_PACKET *) NetbufAllocSpace (Nbuf, Len, FALSE);\r
   Packet->OpCode = HTONS (Instance->Operation);\r
   Cur            = Packet->Rrq.Filename;\r
-  Cur            = AsciiStrCpy (Cur, Token->Filename);\r
-  Cur            = AsciiStrCpy (Cur, Mode);\r
+  Cur            = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Token->Filename);\r
+  Cur           += AsciiStrLen ((CHAR8 *) Token->Filename) + 1;\r
+  Cur            = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Mode);\r
+  Cur           += AsciiStrLen ((CHAR8 *) Mode) + 1;\r
 \r
   for (Index = 0; Index < Token->OptionCount; ++Index) {\r
-    Cur = AsciiStrCpy (Cur, Options[Index].OptionStr);\r
-    Cur = AsciiStrCpy (Cur, Options[Index].ValueStr);\r
+    Cur  = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].OptionStr);\r
+    Cur += AsciiStrLen ((CHAR8 *) Options[Index].OptionStr) + 1;\r
+\r
+    Cur  = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].ValueStr);\r
+    Cur += AsciiStrLen ((CHAR8 *) (CHAR8 *) Options[Index].ValueStr) + 1;\r
   }\r
 \r
   return Mtftp4SendPacket (Instance, Nbuf);\r
@@ -333,7 +343,7 @@ Mtftp4SendError (
   EFI_MTFTP4_PACKET         *TftpError;\r
   UINT32                    Len;\r
 \r
-  Len     = (UINT32) (AsciiStrLen (ErrInfo) + sizeof (EFI_MTFTP4_ERROR_HEADER));\r
+  Len     = (UINT32) (AsciiStrLen ((CHAR8 *) ErrInfo) + sizeof (EFI_MTFTP4_ERROR_HEADER));\r
   Packet  = NetbufAlloc (Len);\r
 \r
   if (Packet == NULL) {\r
@@ -344,7 +354,7 @@ Mtftp4SendError (
   TftpError->OpCode = HTONS (EFI_MTFTP4_OPCODE_ERROR);\r
   TftpError->Error.ErrorCode = HTONS (ErrCode);\r
 \r
-  AsciiStrCpy (TftpError->Error.ErrorMessage, ErrInfo);\r
+  AsciiStrCpy ((CHAR8 *) TftpError->Error.ErrorMessage, (CHAR8 *) ErrInfo);\r
 \r
   return Mtftp4SendPacket (Instance, Packet);\r
 }\r
@@ -419,6 +429,7 @@ Mtftp4SendPacket (
   UDP_POINTS                UdpPoint;\r
   EFI_STATUS                Status;\r
   UINT16                    OpCode;\r
+  UINT16                    Value;\r
 \r
   //\r
   // Save the packet for retransmission\r
@@ -440,7 +451,8 @@ Mtftp4SendPacket (
   // Send the requests to the listening port, other packets\r
   // to the connected port\r
   //\r
-  OpCode = NTOHS (*((UINT16 *) NetbufGetByte (Packet, 0, NULL)));\r
+  Value = *((UINT16 *) NetbufGetByte (Packet, 0, NULL));\r
+  OpCode = NTOHS (Value);\r
 \r
   if ((OpCode == EFI_MTFTP4_OPCODE_RRQ) || (OpCode == EFI_MTFTP4_OPCODE_DIR) ||\r
       (OpCode == EFI_MTFTP4_OPCODE_WRQ)) {\r
@@ -455,7 +467,7 @@ Mtftp4SendPacket (
              Instance->UnicastPort,\r
              Packet,\r
              &UdpPoint,\r
-             Instance->Gateway,\r
+             0,\r
              Mtftp4OnPacketSent,\r
              Instance\r
              );\r
@@ -485,6 +497,7 @@ Mtftp4Retransmit (
   UDP_POINTS                UdpPoint;\r
   EFI_STATUS                Status;\r
   UINT16                    OpCode;\r
+  UINT16                    Value;\r
 \r
   ASSERT (Instance->LastPacket != NULL);\r
 \r
@@ -495,7 +508,8 @@ Mtftp4Retransmit (
   //\r
   // Set the requests to the listening port, other packets to the connected port\r
   //\r
-  OpCode = NTOHS (*(UINT16 *) NetbufGetByte (Instance->LastPacket, 0, NULL));\r
+  Value = *(UINT16 *) NetbufGetByte (Instance->LastPacket, 0, NULL);\r
+  OpCode = NTOHS (Value);\r
 \r
   if ((OpCode == EFI_MTFTP4_OPCODE_RRQ) || (OpCode == EFI_MTFTP4_OPCODE_DIR) ||\r
       (OpCode == EFI_MTFTP4_OPCODE_WRQ)) {\r
@@ -510,7 +524,7 @@ Mtftp4Retransmit (
              Instance->UnicastPort,\r
              Instance->LastPacket,\r
              &UdpPoint,\r
-             Instance->Gateway,\r
+             0,\r
              Mtftp4OnPacketSent,\r
              Instance\r
              );\r
@@ -569,7 +583,7 @@ Mtftp4OnTimerTick (
       Mtftp4SendError (\r
          Instance,\r
          EFI_MTFTP4_ERRORCODE_REQUEST_DENIED,\r
-         "User aborted the transfer in time out"\r
+         (UINT8 *) "User aborted the transfer in time out"\r
          );\r
 \r
       Mtftp4CleanOperation (Instance, EFI_ABORTED);\r