mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-03-25 13:29:03 +02:00
util/nvmutil: verify final offset in pwrite/pread
Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
@@ -1952,6 +1952,7 @@ prw(int fd, void *mem, size_t nrw,
|
||||
int loop_eagain, int loop_eintr)
|
||||
{
|
||||
off_t off_orig;
|
||||
off_t off_last;
|
||||
ssize_t r;
|
||||
int saved_errno;
|
||||
int positional_rw;
|
||||
@@ -2022,11 +2023,14 @@ real_pread_pwrite:
|
||||
|| errno == try_err(loop_eagain, EAGAIN)));
|
||||
|
||||
saved_errno = errno;
|
||||
if (lseek_loop(fd, off_orig, SEEK_SET,
|
||||
loop_eagain, loop_eintr) == (off_t)-1) {
|
||||
off_last = lseek_loop(fd, off_orig, SEEK_SET,
|
||||
loop_eagain, loop_eintr);
|
||||
if (off_last == (off_t)-1) {
|
||||
errno = saved_errno;
|
||||
return -1;
|
||||
}
|
||||
if (off_last != off_orig)
|
||||
goto err_prw;
|
||||
errno = saved_errno;
|
||||
|
||||
return rw_over_nrw(r, nrw);
|
||||
|
||||
Reference in New Issue
Block a user