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; _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot