summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
17 hoursutil/nvmutil: re-add arc4randomLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
17 hoursutil/nvmutil: 5 retries, not 10Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
17 hoursutil/nvmutil: check if gbe.bin is seekableLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
17 hoursutil/nvmutil: check inode during post-verifyLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
17 hoursutil/nvmutil: warn about gbe.bin hard linksLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
17 hoursutil/nvmutil: guard file replacement attacksLeah Rowe
i already also guard other toctuo attacks :) Signed-off-by: Leah Rowe <leah@libreboot.org>
17 hoursutil/nvmutil: guard against unlinking fileLeah Rowe
if someone deletes gbe.bin while operating, nvmutil will now abort Signed-off-by: Leah Rowe <leah@libreboot.org>
18 hoursutil/nvmutil: don't use /dev/urandomLeah Rowe
too over engineered and cumbersome. the new security in prw() makes it brittle, and i'd rather not move checks outside of it. the fallback rand is random enough. Signed-off-by: Leah Rowe <leah@libreboot.org>
18 hoursutil/nvmutil: fix file checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
18 hoursutil/nvmutil: fix cast checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
18 hoursutil/nvmutil: more aggressive file checkingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
18 hoursutil/nvmutil: prevent overflow in rw_file_exactLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
18 hoursutil/nvmutil: verify final offset in pwrite/preadLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
18 hoursutil/nvmutil: check regular file in rw_file_exactLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
19 hoursutil/nvmutil: fix if (PWRITE)Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
19 hoursutil/nvmutil: don't check o_append in prwLeah Rowe
slow, per call. prw should be generic. do it just for gbe files, once Signed-off-by: Leah Rowe <leah@libreboot.org>
20 hoursutil/nvmutil: configurable eintr/eagainLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
20 hoursutil/nvmutil: configurable retries/preadLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
20 hoursutil/nvmutil: support real pwrite/preadLeah Rowe
build flag Signed-off-by: Leah Rowe <leah@libreboot.org>
20 hoursutil/nvmutil: better commented I/O functionsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: make eintr/eagain setup clearerLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hoursnvmutil: fix rval in close_filesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hoursutil/nvmutil: don't check write checksums on partialLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hoursutil/nvmutil: don't recurse err/close_filesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: restore pad before reading to itLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: don't show checksum on bad pwriteLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: always restore saved errnoLeah Rowe
the last lseek there is only there to reset state, so its errors are irrelevant. Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: post-write verification reportLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
31 hoursutil/nvmutil: optimise fsync / write checkLeah Rowe
write all at once, then sync all at once, then verify all at once. this increases the chancce that all data gets written first, in the case of power less, because fsync may take a while on some systems. Signed-off-by: Leah Rowe <leah@libreboot.org>
32 hoursutil/nvmutil: set EIO on bad memcmpLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
32 hoursutil/nvmutil: split up rw_gbe_file_partLeah Rowe
the post-verification stage deserves a function Signed-off-by: Leah Rowe <leah@libreboot.org>
32 hoursutil/nvmutil: detect partial gbe rwLeah Rowe
we already covered this in prw() which is what ultimately gets called, but still. it's logically correct not to check it here. Signed-off-by: Leah Rowe <leah@libreboot.org>
32 hoursutil/nvmutil: verify gbe contents after writingLeah Rowe
read it back and check. sync to disk first. Signed-off-by: Leah Rowe <leah@libreboot.org>
33 hoursutil/nvmutil: consistent typesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
34 hoursutil/nvmutil: handle zero return in rw_file_exactLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
35 hoursutil/nvmutil: rename lseek_eintrLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
35 hoursutil/nvmutil: fix lseek eintr err checkLeah Rowe
it should be is equal, not not equal Signed-off-by: Leah Rowe <leah@libreboot.org>
35 hoursutil/nvmutil: rename err_eagain() to try_err()Leah Rowe
makes more sense in code Signed-off-by: Leah Rowe <leah@libreboot.org>
35 hoursutil/nvmutil: make EINTR configurable in prw()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
35 hoursutil/nvmutil: tidy up prw()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
35 hoursutil/nvmutil: extra overflow check in prwLeah Rowe
compliant posix systems should never meet this check, but i put it here. spec != implementation Signed-off-by: Leah Rowe <leah@libreboot.org>
35 hoursutil/nvmutil: extra overflow check in prwLeah Rowe
do it at the very end Signed-off-by: Leah Rowe <leah@libreboot.org>
35 hoursutil/nvmutil: handle EAGAIN in prw()Leah Rowe
the cat function can be greatly simplified handle it conditionally, because not all functions should use it Signed-off-by: Leah Rowe <leah@libreboot.org>
36 hoursutil/nvmutil: split up rw_file_exactLeah Rowe
move the gbe-specific parts out of it what remains is a relatively generic function; a very conservative implementation, wrapping around libc functions but with a few additional safety checks. Signed-off-by: Leah Rowe <leah@libreboot.org>
36 hoursutil/nvmutil: add negative off check to prwLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
36 hoursutil/nvmutil: also do libc check on normal ioLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
37 hoursutil/nvmutil: properly reset lseek on errorLeah Rowe
don't return. set r instead. this will fall through and return the same way, but with proper reset. Signed-off-by: Leah Rowe <leah@libreboot.org>
37 hoursutil/nvmutil: move libc check to prw()Leah Rowe
this still gets done from rw_once, but it's generic enough that we want it in our prw() wrapper function. Signed-off-by: Leah Rowe <leah@libreboot.org>
37 hoursutil/nvmutil: remove io_args()Leah Rowe
most of it can be done in rw_file_once truly general checks have been moved to prw(), so that the function is more general purpose. Signed-off-by: Leah Rowe <leah@libreboot.org>
37 hoursutil/nvmutil: move EINTR handle to prw()Leah Rowe
this way, we now have a universal function that is reusable elsewhere, with the same redundancy. the rw_once and rw_exact functions still get this redundancy, through prw Signed-off-by: Leah Rowe <leah@libreboot.org>