util/nvmutil: only open /dev/urandom on setmac

otherwise, it's a pointless computation

i also added a guard to mitigate this, in the
read file function. this should have been there
anyway.

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-03-08 02:39:53 +00:00
parent 9bd7d04b49
commit 1bbc6ac890
+4 -2
View File
@@ -252,6 +252,7 @@ main(int argc, char *argv[])
if (cmd == CMD_SETMAC) if (cmd == CMD_SETMAC)
printf("Randomisation method: arc4random_buf\n"); printf("Randomisation method: arc4random_buf\n");
#else #else
if (cmd == CMD_SETMAC)
open_dev_urandom(); open_dev_urandom();
#endif #endif
open_gbe_file(); open_gbe_file();
@@ -407,7 +408,6 @@ open_dev_urandom(void)
{ {
struct stat st_urandom_fd; struct stat st_urandom_fd;
if (cmd == CMD_SETMAC)
printf("Randomisation method: %s\n", newrandom); printf("Randomisation method: %s\n", newrandom);
/* /*
@@ -417,7 +417,6 @@ open_dev_urandom(void)
if ((urandom_fd = open(rname, O_RDONLY)) != -1) if ((urandom_fd = open(rname, O_RDONLY)) != -1)
return; return;
if (cmd == CMD_SETMAC)
fprintf(stderr, "Can't open %s (will use %s instead)\n", fprintf(stderr, "Can't open %s (will use %s instead)\n",
newrandom, oldrandom); newrandom, oldrandom);
@@ -631,6 +630,9 @@ read_file_exact(int fd, void *buf, size_t len,
int retry; int retry;
ssize_t rval; ssize_t rval;
if (fd == -1)
err(ECANCELED, "Trying to open bad fd: %s", path);
for (retry = 0; retry < MAX_RETRY_READ; retry++) { for (retry = 0; retry < MAX_RETRY_READ; retry++) {
if (op) if (op)
rval = pread(fd, buf, len, off); rval = pread(fd, buf, len, off);