[U-Boot] TFTP - check for len == 0 before storing
David Andrey
David.Andrey at netmodule.com
Wed Apr 20 10:21:01 CEST 2011
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;
More information about the U-Boot
mailing list