summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
21 hoursutil/nvmutil: rename set_err for code clarityLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: skip errno check in mainLeah Rowe
skip it if there is a valid checksum, to mitigate erroneous errno state upon exit from run_cmd(), because we can assume by this point that we are in fact ready to write at this point. the check at the end still exists, which will catch any error set by write, and any error set before that. this fixes a weird warning on cmd_dump. Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: don't reset errno in rw_file_exactLeah Rowe
reset it in callers instead. this means that the main function is more generalised. we know by the time we exit that there is no error. Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: reset errno in gbe_catLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: reset errno in gbe_cat_bufLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: fix bad loop in command sanitizerLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: use set_err where appropriateLeah Rowe
in the new file i/o functions, my own setting of errno should be done with set_err. this avoids clobbering what the real libc set. Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: properly set errno everywhereLeah Rowe
i set it to ecanceled before. now i set it more appropriately, for each type of error. where a real syscall was called, or my file i/o functions are used, err() is called with errno itself as input, to avoid clobbering real errno. Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: fix /dev/random fallbackLeah Rowe
i forgot to set urandom_fd Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursRevert "util/nvmutil: fix check in command sanitizer"Leah Rowe
This reverts commit b28076557b4c12965c15d6fad7c06e34c67f7921. nope. the check was already correct before.
21 hoursutil/nvmutil: don't use bad pointer cast in prwLeah Rowe
in practise it's ok, but some compilers might complain. all this change costs is a bit of branching inside a loop, but compilers will sort that out. Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: fix check in command sanitizerLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: use EINVAL in command sanitizenLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
21 hoursutil/nvmutil: don't use xopen() for urandomLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: conservative use of errnoLeah Rowe
only use errno itself as the value Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: re-try /dev/[u]random on EAGAINLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: Make rw_file_exact an ssize_tLeah Rowe
Use its return value. Don't exit from the function, but actually treat it like a real syscall. Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: use O_NONBLOCK on /dev/[u]randomLeah Rowe
on some systems, it is otherwise blocking, but blocking can be disabled, making access more reliable. Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: fix possible overflow: gbe_x_offsetLeah Rowe
preventative fix, since the values are currently quite tiny. this new check is the same, but goes the other way to eliminate overflow. Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: reset rw_file_exact errno on EINTRLeah Rowe
this is essentially what it already did, but it wasn't explicitly stated. now it's clearer. Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: comment prw()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: better SSIZE_MAX defineLeah Rowe
the old one assumes that ssize_t is signed size_t, which let's face it, is always true in practise, but not actually guaranteed! so now i'm using one that's even more pedantic. Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: define EXIT_FAILURE/SUCCESSLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: more sensible errno initLeah Rowe
just use errno itself as input to err if unset, it's set to ECANCELED anyway i really should rewrite the error handling to not use errno at some point. it's a bit unreliable, on some unix systems. Signed-off-by: Leah Rowe <leah@libreboot.org>
24 hoursutil/nvmutil: proper errno status on prw()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
24 hoursutil/nvmutil: reset errno if EINTR on lseekLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
25 hoursutil/nvmutil: stricter errno on prw()Leah Rowe
we want the first error to be the one shown, when returning negative Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: fix printf c89/c90 specifiersLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: reset part_validLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: restore errno if lseek resets itLeah Rowe
if it resets it on success, that is! theoretically possible. we must preserve errno. normally i'm a bit more casual about it, but this function is replicating libc, so i must be strict Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: fix another printf specifierLeah Rowe
ditto to last commit Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: fix bad print specifier (c90)Leah Rowe
size_t may be unsigned long long, but lu is for unsigned long. the integer is small enough that we don't need to worry, so let's just cast it accordingly (inside err) Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: only inc num_invalid on bad checksumLeah Rowe
this fixes a regression that i introduced Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: restore errno on failed offset restoreLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: don't leave part_valid untouchedLeah Rowe
always set it. the current logic only sets it if valid, but invalid doesn't, relying on global initialisation. this check sets it explicitly. Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: remove unused st variableLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: check whether a file is a fileLeah Rowe
and not, say, a socket or a directory, or a character device, or something else. Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: preserve errno during i/oLeah Rowe
do not clobber errno yeah we're basically being libc now Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil prw: always restore original offsetLeah Rowe
it currently only does so on success, but errors will leave the file descriptor corrupted. reset it accordingly. Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil: err if file offset failsLeah Rowe
currently it returns success, if restoring a previous offset failed. this leaves descriptor corrupted when the caller thinks otherwise return -1 instead, so that the caller can treat it as an error, relying on whatever lseek had set for errno Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil: fix buffer overread in prw()Leah Rowe
edge case scenario, unlikely to actually trigger. now impossible to trigger. Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil: fix rc overflow bug in rw_file_exactLeah Rowe
check that it's below len, not above it. that way, it will now exit if it goes above (which it shouldn't, but it theoretically could if the code was changed and there was a regression or subtle edge case) Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil: use C90 instead of C99Leah Rowe
with the other changes made recently, super old compilers now work. yes, i needed to change some specifiers in printf. typedefs provided for uint, and a define included X OPEN SOURCE 500. and asserts for integers. Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hoursutil/nvmutil: define O_BINARY flagLeah Rowe
use it Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hoursutil/nvmutil: fix indent on ifdefsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hoursutil/nvmutil: define SIZE_MAX if not definedLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hoursutil/nvmutil: remove arc4random for portabilityLeah Rowe
just use /dev/urandom and fall back to /dev/random this is what i was doing for years. this combined with other changes, and the new prw() function for i/o, means portability should be pretty high now. i will actually start testing nvmutil on old bsd systems from the 90s later. Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hoursutil/nvmutil: portable pread/pwriteLeah Rowe
not thread-safe lucky we're single-threaded! Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hourswipLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
28 hoursutil/nvmutil: more reliable stdint.h checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>