summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2026-03-13 17:39:48 +0000
committerLeah Rowe <leah@libreboot.org>2026-03-13 17:46:08 +0000
commite64b9b3e15fdfab3df22dfd38e203f6d4c298f4d (patch)
tree458244eef9dd2f1f8d3a686c96be8a83b5d8faa1
parent6b158a86107f330343598fabe2d9d3eaf6aa2d93 (diff)
util/nvmutil: fix offset validation
i didn't take into account partial writes, in io_args this fixes it unfortunately, this means i have to loosen the offset check a bit, but it's fine Signed-off-by: Leah Rowe <leah@libreboot.org>
-rw-r--r--util/nvmutil/nvmutil.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c
index 7fdb8545..f586e199 100644
--- a/util/nvmutil/nvmutil.c
+++ b/util/nvmutil/nvmutil.c
@@ -1753,18 +1753,15 @@ static int
io_args(int fd, void *mem, size_t nrw,
off_t off, int rw_type)
{
- if (mem != pad
+ if (mem != (void *)pad
&& mem != rnum
&& (mem < (void *)buf || mem >= (void *)(buf + GBE_FILE_SIZE)))
goto err_io_args;
- if (off != 0
- && off != gbe_file_offset(1, "i/o check"))
+ if (off < 0 || off >= gbe_file_size)
goto err_io_args;
- if (nrw != GBE_PART_SIZE &&
- nrw != NVM_SIZE &&
- nrw != NUM_RANDOM_BYTES)
+ if (nrw > GBE_PART_SIZE)
goto err_io_args;
if (fd < 0