summaryrefslogtreecommitdiff
path: root/net/tftp.c
diff options
context:
space:
mode:
authorPeter Tyser <ptyser@xes-inc.com>2008-12-01 16:29:38 -0600
committerBen Warren <biggerbadderben@gmail.com>2008-12-04 22:51:54 -0800
commit6a86bb6c25376f0358478219fa28d7c84dd01ed0 (patch)
treea4ef1b3397ef184072eb8c7e1c55cb200995c06d /net/tftp.c
parentd32c5be50bf0600bfdc54223ef341ee9c63db445 (diff)
downloadu-boot-imx-6a86bb6c25376f0358478219fa28d7c84dd01ed0.zip
u-boot-imx-6a86bb6c25376f0358478219fa28d7c84dd01ed0.tar.gz
u-boot-imx-6a86bb6c25376f0358478219fa28d7c84dd01ed0.tar.bz2
net: Fix TftpStart() ip:filename bug
The TftpStart() function modifies the 'BootFile' string when 'BootFile' contains both an IP address and filename (eg 1.2.3.4:/path/file). This causes subsequent calls to TftpStart to incorrectly parse the TFTP filename and server IP address to use. For example: => tftp 0x100000 10.52.0.62:/home/ptyser/non_existant Speed: 100, half duplex Using eTSEC1 device TFTP from server 10.52.0.62; our IP address is 10.52.253.79 ^^^^^^^^^^ CORRECT Filename '/home/ptyser/non_existant'. ^^^^^^^^^^^^^^^^^^^^^^^^^ CORRECT Load address: 0x100000 Loading: * TFTP error: 'File not found' (1) Starting again eTSEC2: No link. Speed: 100, half duplex Using eTSEC1 device TFTP from server 10.52.0.33; our IP address is 10.52.253.79 ^^^^^^^^^^ WRONG Filename '10.52.0.62'. ^^^^^^^^^^ WRONG Load address: 0x100000 Loading: * TFTP error: 'File not found' (1) Starting again TftpStart() was modified to not modify the 'BootFile' string. Signed-off-by: Peter Tyser <ptyser@xes-inc.com> Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
Diffstat (limited to 'net/tftp.c')
-rw-r--r--net/tftp.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/net/tftp.c b/net/tftp.c
index ce6ea3d..3dac3d8 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -499,9 +499,8 @@ TftpStart (void)
strncpy(tftp_filename, BootFile, MAX_LEN);
tftp_filename[MAX_LEN-1] = 0;
} else {
- *p++ = '\0';
TftpServerIP = string_to_ip (BootFile);
- strncpy(tftp_filename, p, MAX_LEN);
+ strncpy(tftp_filename, p + 1, MAX_LEN);
tftp_filename[MAX_LEN-1] = 0;
}
}