diff options
Diffstat (limited to 'net/nfs.c')
-rw-r--r-- | net/nfs.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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"); |