summaryrefslogtreecommitdiff
path: root/util
AgeCommit message (Collapse)Author
22 hoursutil/nvmutil: read in fixed 4KB blocksLeah Rowe
modern file systems work in 4KB blocks. reading only a small part of it doesn't really make much difference in terms of performance. simplify the code instead. Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: use fixed bufferLeah Rowe
modern malloc implementations make the optimisation here pretty pointless. modern computers make this modification pointless. i'm not planning to run nvmutil on a VAX. openbsd removed support for it ages ago. 8KB fixed buffer is fine. Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: remove pointless arg in openFilesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: don't use xor swapLeah Rowe
it doesn't save any time on modern systems, and it's just confusing for some people to read. i mean, i understand it instinctively, but normal people do it with a swap variable. Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: don't use size_t as pointerLeah Rowe
the only reason i did this was for that xor swap, but we can just use an intermediary value Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: don't capitalise set_errLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: make xopen a function, not a macroLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
24 hoursutil/nvmutil: merge block_unveil back with mainLeah Rowe
we always want unveil/pledge calls to be in main, when possible, so that they are more transparent and easier to understand when re-factoring, because it's extremely important that these syscalls be done correctly. main is small enough now, from other re-factoring changes, that i'm happy to have this back in main now. Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: fix bad bound checkLeah Rowe
the current check is too liberal. make it sticter. the issue is that the previous check did not take into account that it's a check on a uint16_t array, against nf which refers to a number of bytes. Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: tidy up the xopen macroLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: add boundary checks on word/setWordLeah Rowe
this was the other complication with doing it as a macro. for something this fundamental, we really want to ensure that every access is safe. Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: make word/setWord a functionLeah Rowe
having this as a macro makes the code quite brittle. better to have it as a function. Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: rename openGbeFile to openFilesLeah Rowe
merge the urandom handling back into this function. it's called immediately after in main anyway, so we may as well. this reduces the size of main. Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: remove redundant unveil callLeah Rowe
in the given call, we then do an equivalent call immediately after that is the same, but without unveil, so we'll just defer to that. this changes no behaviour. Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: call block_unveil earlierLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: bring pledge in set_io_flag to mainLeah Rowe
in general, we should ensure that the pledge calls only happen inside main. this means we can more easily see them, in future re-factoring. Signed-off-by: Leah Rowe <leah@libreboot.org>
30 hoursutil/nvmutil: call set_cmd much earlierLeah Rowe
this will enable hardening of the pledge syscalls. it also means that the program will error out much earlier, when an invalid command is given, rather than opening a bunch of files first, and it will do so under reduced privilege already, notwithstanding the further pledge/unveil hardening that is planned. Signed-off-by: Leah Rowe <leah@libreboot.org>
30 hoursutil/nvmutil: unveil /dev/urandom much earlierLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
30 hoursutil/nvmutil: split xopen handlingLeah Rowe
same as the previous change. i'm going to harden the unveil and pledge calls next. Signed-off-by: Leah Rowe <leah@libreboot.org>
30 hoursutil/nvmutil: split unveil handlingLeah Rowe
urandom in main. this is because i'm going to further harden the use of pledge and unveil in a future patch, and this is a prerequisite. Signed-off-by: Leah Rowe <leah@libreboot.org>
30 hoursutil/nvmutil: split cmd init to new functionLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
34 hoursutil/nvmutil: split flags init to new functionLeah Rowe
main is getting much smaller now Signed-off-by: Leah Rowe <leah@libreboot.org>
34 hoursutil/nvmutil: tidy up main()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
34 hoursutil/nvmutil: split unveil code to new functionLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
34 hoursutil/nvmutil: separate usage functionLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: simplify readGbe and writeGbeLeah Rowe
the for loop only contains one line Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: centralise all errno handlingLeah Rowe
do it in the macro. this way, if a given error is present, it's not overridden. this enables easier debugging. Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: rename ERR to SET_ERR, for clarityLeah Rowe
i renamed filename to fname, so that certain lines would still fit within 80 characters without introducing a new line break. Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: split pread from readGbeLeah Rowe
split it into readGbe_part, for code clarity. Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: split pwrite handling from writeGbeLeah Rowe
handle it in a separate function, for clarity. the main function just checks each part whether it changed, and then passes control to writeGbe_part. Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: simplify a few else statementsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: don't hardcode errno to ECANCELEDLeah Rowe
use the ERR macro instead, so that an existing value will not be overridden. this is useful for debugging. Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: explain a few parts in nvmallocLeah Rowe
the current code is optimised for speed, but it's a bit esoteric, so make it easier to understand. Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: split malloc handling out of readGbeLeah Rowe
this has to do with memory allocation, not actual reading of the gbe file into memory. split it up, for clarity. Signed-off-by: Leah Rowe <leah@libreboot.org>
8 daysnvmutil: further simplify nr/nw error handlingLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysutil/nvmutil: simplify nr/nw error handlingLeah Rowe
when nf and nr/nw are not the same, we know there is an error condition, so defer to the following err() call, but use ERR() there instead of hardcoding use of ECANCELED. this actually improves the error handling, by being more verbose, while reducing the amount of logic. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysutil/nvmutil: remove pointless diagnosticsLeah Rowe
we only need to know the number of bytes written or read under error conditions. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysutil/nvmutil: say part number on read/write reportLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
12 daysutil/grubpo: new util, for grub PO filesLeah Rowe
this is the program I recently wrote, that generated the submodule entries for the GRUB PO file fix this utility is for reference only. i'll probably do away with the fix at some point, replacing it with my own git-based submodule repository, containing the PO files. this would make things easier, and then that repository would contain the utility instead. i'm just putting this in lbmk for now, so that we have it somewhere. Signed-off-by: Leah Rowe <leah@libreboot.org>
12 daysutil/nvmutil: general code cleanupLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
12 daysutil/spkmodem_recv: general code cleanupLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-10-04config/git: import suckless sbaseLeah Rowe
i currently use the output of sha512sum in several places of xbmk, which is a bit unreliable in case output changes. other cases where i use util outputs in variables are probably reliable, because i'm using mostly posix utilities in those. to mitigate this, i now import suckless sbase, which has a reasonable sha512sum implementation. *every* binary it builds is being placed in build.list, because i'll probably start using more of them. for example, i may start modifying the "date" implementation, adding the GNU-specific options that i need as mentioned on init.sh i'm importing it in util/ because the sha512sum util is needed for verifying project sources, so if sbase itself is a "project source", that means we can into a chicken and egg bootstrapping problem. this is sbase at revision: 055cc1ae1b3a13c3d8f25af0a4a3316590efcd48 Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-05-03util/nvmutil: use x, not ?, for random charactersLeah Rowe
A user reported that '?' causes an error on zsh. See: https://codeberg.org/libreboot/lbmk/issues/261 For example: ./mk inject libreboot-XXXXXX.tar.xz setmac ??:??:??:??:??:?? The user got: zsh: no matches found: ??:??:??:??:??:?? The mitigation here is to double-quote, e.g.: ./mk inject libreboot-XXXXXX.tar.xz setmac "??:??:??:??:??:??" However, a lot of people won't do that. Therefore, I will retain the current behaviour but support x/X for randomness. Now lbmk uses x by default, instead. I will now update the documentation, accordingly. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-02-25util/nvmutil: remove excessive commentsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-02-10util/nvmutil: Fix bad error messages on R/WLeah Rowe
The messages didn't really make sense. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-02-07util/nvmutil: hardened pledge on help outputLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-01-29util/nvmutil: only set mac_updated at the endLeah Rowe
after setting the checksum too this is functionally no different, but setting it at the start didn't sit right with me. it's more logically correct to set it at the end, in case any error did not result in an exit. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-01-29util/nvmutil: Fix bad comparisonLeah Rowe
We're checking if errno is ENOTDIR, not setting it; the previous code would always return true, and then set errno 0, which in the context of this code was actually OK, so this patch makes no functional difference in practise. However, I'm a stickler for technical correctness. I caught this when trying to compile with clang, because clang is quite pedantic about checking for exactly this type of bug. Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-01-29util/nvmutil: allow ./nvm gbe MACLeah Rowe
previously, if the user ran: ./nvm GBE [MAC address] it would error, treating the MAC as a command now if only 3 arguments are provided, and the 3rd argument ins't a valid command, it's treated as a MAC address and validated accordingly. this should make nvmutil easier to use, because I imagine a lot of users forget to use setmac there's no reason we should be so pedantic. we should allow it to be used flexibly like this Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-01-29util/nvmutil: move "e" to swap()Leah Rowe
we only use it there, so we should only define it there. it's used to detect host CPU endianness. Signed-off-by: Leah Rowe <leah@libreboot.org>