Hi,

Please review the attached patch for Mtftp6Dxe driver.

The issue:


1.       TFTP protocol is based upon UDP, which means no reliability guaranteed 
from network stack.

2.       Upon each successful received data packet, the client sends an ACK and 
restarting a timeout timer.

3.       Once the timer hit the timeout, the client retransmits the last ACK 
message and restarting the timeout timer. This step happens RETRY_TIMES times.

4.       Mtftp6Dxe implementation has a bug that in step 3 instead of sending 
the last ACK, it sends the current session's first packet, which is TFTP RReq 
(TFTP Read Request), which, in turn, evaluates to a violation of the TFTP 
protocol and causes it's undefined behavior.

5.       A fix to the above is in the patch provided, which ensures the last 
ACKed packet is sent on retransmission.

Ari

Attachment: fix_retx_mtftp6dxe.patch
Description: fix_retx_mtftp6dxe.patch

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to