summaryrefslogtreecommitdiffstats
path: root/net/nfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/nfs.c')
-rw-r--r--net/nfs.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/net/nfs.c b/net/nfs.c
index 63573098d7..df0840e4e7 100644
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
/*
* NFS support driver - based on etherboot and barebox's tftp.c
*
@@ -29,7 +31,6 @@
#include <malloc.h>
#include <libgen.h>
#include <fs.h>
-#include <libgen.h>
#include <fcntl.h>
#include <errno.h>
#include <progress.h>
@@ -533,7 +534,7 @@ static int nfs_readlink_reply(unsigned char *pkt, unsigned len)
static int nfs_read_reply(unsigned char *pkt, unsigned len)
{
- int rlen;
+ unsigned int rlen;
uint32_t *data;
int ret;
@@ -552,6 +553,8 @@ static int nfs_read_reply(unsigned char *pkt, unsigned len)
rlen = ntohl(net_read_uint32(data + 18));
+ rlen = max_t(unsigned int, rlen, len - 19);
+
ret = write(net_store_fd, (char *)(data + 19), rlen);
if (ret < 0) {
perror("write");