summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJayachandran Chandrasekharan Nair <jayachandranc@netlogicmicro.com>2012-07-10 06:18:54 (GMT)
committerJoe Hershberger <joe.hershberger@ni.com>2012-07-11 18:14:16 (GMT)
commitbc46dfac2f21756642e549b05689e03db538639f (patch)
treea93532c71e061d9257e14aba5c6aebe67ce549ce
parent211e47549b668c7cdd8658c0413a272f0d0495d4 (diff)
downloadu-boot-bc46dfac2f21756642e549b05689e03db538639f.tar.xz
net: tftp: fix type of block arg to store_block
The block argument for store_block can be -1 when the tftp sequence number rolls over (i.e TftpBlock == 0), so the first argument to store_block has to be of type 'int' instead of 'unsigned'. In our environment (gcc 4.4.5 mips toolchain), this causes incorrect 'offset' to be generated for storing the block, and the tftp block with number 0 will be written elsewhere, resulting in a bad block in the downloaded file and a memory corruption. Signed-off-by: Jayachandran Chandrasekharan Nair <jayachandranc@netlogicmicro.com>
-rw-r--r--net/tftp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/tftp.c b/net/tftp.c
index b2e08b4..59a8ebb 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -156,7 +156,7 @@ mcast_cleanup(void)
#endif /* CONFIG_MCAST_TFTP */
static inline void
-store_block(unsigned block, uchar *src, unsigned len)
+store_block(int block, uchar *src, unsigned len)
{
ulong offset = block * TftpBlkSize + TftpBlockWrapOffset;
ulong newsize = offset + len;