]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: tftp: fix type of block arg to store_block
authorJayachandran Chandrasekharan Nair <jayachandranc@netlogicmicro.com>
Tue, 10 Jul 2012 06:18:54 +0000 (11:48 +0530)
committerJoe Hershberger <joe.hershberger@ni.com>
Wed, 11 Jul 2012 18:14:16 +0000 (13:14 -0500)
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>
net/tftp.c

index b2e08b4bfb3d3daba64328c24e84ecbe9afc6970..59a8ebb3cf339b3c40ff24846c13406e5dc0b9a4 100644 (file)
@@ -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;