From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Andrey Date: Wed, 20 Apr 2011 10:21:01 +0200 Subject: [U-Boot] TFTP - check for len == 0 before storing Message-ID: <1QCSeq-0004h5-4Z@wolf.netmodule.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello, I had a problem with an old TFTP Server which is sending a second "last" data block with "len == 0" at end. It's clearly not RFC conform, but I still made a additional check in u-boot/tftp to avoid a wrong "filesize" value. This wrong filesize value caused some trouble by NAND operations. Regards David Date: Wed, 20 Apr 2011 10:12:10 +0200 Subject: [PATCH] Check for for data block len == 0 --- net/tftp.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/net/tftp.c b/net/tftp.c index ed559b7..40d81b5 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -135,8 +135,14 @@ mcast_cleanup(void) static __inline__ void store_block (unsigned block, uchar * src, unsigned len) { - ulong offset = block * TftpBlkSize + TftpBlockWrapOffset; - ulong newsize = offset + len; + ulong offset = 0; + ulong newsize = 0; + + if (len == 0) + return; + + offset = block * TftpBlkSize + TftpBlockWrapOffset; + newsize = offset + len; #ifdef CONFIG_SYS_DIRECT_FLASH_TFTP int i, rc = 0;