summaryrefslogtreecommitdiff
path: root/apps/netutils
diff options
context:
space:
mode:
Diffstat (limited to 'apps/netutils')
-rw-r--r--apps/netutils/tftpc/tftpc_get.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/apps/netutils/tftpc/tftpc_get.c b/apps/netutils/tftpc/tftpc_get.c
index f4fb74dd3..bfae1a3b7 100644
--- a/apps/netutils/tftpc/tftpc_get.c
+++ b/apps/netutils/tftpc/tftpc_get.c
@@ -256,10 +256,19 @@ int tftpget(const char *remote, const char *local, in_addr_t addr, bool binary)
/* Parse the incoming DATA packet */
- if (nbytesrecvd < TFTP_DATAHEADERSIZE ||
- tftp_parsedatapacket(packet, &opcode, &rblockno) != OK ||
+ if (nbytesrecvd < TFTP_DATAHEADERSIZE)
+ {
+ /* Packet is not big enough to be parsed */
+
+ nvdbg("Tiny data packet ignored\n");
+ continue;
+ }
+
+ if (tftp_parsedatapacket(packet, &opcode, &rblockno) != OK ||
blockno != rblockno)
{
+ /* Opcode is not TFTP_DATA or the block number is unexpected */
+
nvdbg("Parse failure\n");
if (opcode > TFTP_MAXRFC1350)
{