mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 12:46:14 +02:00
net: lwip: tftp: Do not write past buffer end
sprintf will add a trailing \0 so manually adding a trailing \0 will
result in an extra unaccounted for character being written. This
overwrote the first byte of the following allocation block resulting in
unexpected behavior.
This was found by Running 'pxe get' with no available file resulting in
multiple attempts, using the default algorithm, to attempt to find a file.
Eventually there would be a failed assert when free() was called.
Failing the assert would result in a system reset.
Fixes: 27d7ccda94fa ("net: lwip: tftp: add support of blksize option to client")
Reported-by: Michal Simek <michal.simek@amd.com>
Tested-by: Michal Simek <michal.simek@amd.com>
Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org>
Tested-by: Tom Rini <trini@konsulko.com> # Pine64+
Reviewed-by: Jerome Forissier <jerome.forissier@arm.com>
Reviewed-by: Jerome Forissier <jerome.forissier@arm.com>
This commit is contained in:
parent
f2566c3a71
commit
8df6b78746
@ -191,7 +191,7 @@ send_request(const ip_addr_t *addr, u16_t port, u16_t opcode, const char* fname,
|
||||
MEMCPY(payload+2, fname, fname_length);
|
||||
MEMCPY(payload+2+fname_length, mode, mode_length);
|
||||
if (tftp_state.blksize)
|
||||
sprintf(payload+2+fname_length+mode_length, "blksize%c%d%c", 0, tftp_state.blksize, 0);
|
||||
sprintf(payload+2+fname_length+mode_length, "blksize%c%d", 0, tftp_state.blksize);
|
||||
|
||||
tftp_state.wait_oack = true;
|
||||
ret = udp_sendto(tftp_state.upcb, p, addr, port);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user