util/nvmutil: remove redundant checksum checks

we centralise this now. better not to over-engineer
our over-engineering.

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-03-08 22:11:39 +00:00
parent c012d4ea5b
commit 61188ee9dc
+9 -22
View File
@@ -152,6 +152,7 @@ static int urandom_fd = -1;
static int gbe_fd = -1; static int gbe_fd = -1;
static size_t part; static size_t part;
static uint8_t part_modified[2]; static uint8_t part_modified[2];
static uint8_t part_valid[2];
static const char rmac[] = "xx:xx:xx:xx:xx:xx"; static const char rmac[] = "xx:xx:xx:xx:xx:xx";
static const char *mac_str; static const char *mac_str;
@@ -685,11 +686,6 @@ read_gbe_file_part(size_t p)
GBE_PART_SIZE, gbe_file_offset(p, "pread"), fname, "pread"); GBE_PART_SIZE, gbe_file_offset(p, "pread"), fname, "pread");
} }
/*
* This is the first defense, but individual
* commands should still perform checksum
* verification where indicated, as a fallback.
*/
static void static void
read_checksums(void) read_checksums(void)
{ {
@@ -719,7 +715,9 @@ read_checksums(void)
if (arg_part && (p == skip_part)) if (arg_part && (p == skip_part))
continue; continue;
if (!good_checksum(p)) if (good_checksum(p))
part_valid[p] = 1;
else
++num_invalid; ++num_invalid;
} }
@@ -740,7 +738,6 @@ static void
cmd_setmac(void) cmd_setmac(void)
{ {
size_t partnum; size_t partnum;
uint8_t mac_updated = 0;
#ifdef HAVE_ARC4RANDOM_BUF #ifdef HAVE_ARC4RANDOM_BUF
printf("Randomisation method: arc4random_buf\n"); printf("Randomisation method: arc4random_buf\n");
@@ -752,10 +749,7 @@ cmd_setmac(void)
parse_mac_string(); parse_mac_string();
for (partnum = 0; partnum < 2; partnum++) for (partnum = 0; partnum < 2; partnum++)
mac_updated |= write_mac_part(partnum); write_mac_part(partnum);
if (mac_updated)
errno = 0;
} }
static void static void
@@ -912,7 +906,8 @@ write_mac_part(size_t partnum)
{ {
size_t w; size_t w;
if (!good_checksum(partnum)) check_bin(partnum, "part number");
if (!part_valid[partnum])
return 0; return 0;
for (w = 0; w < 3; w++) for (w = 0; w < 3; w++)
@@ -1019,21 +1014,13 @@ cmd_brick(void)
static void static void
cmd_copy(void) cmd_copy(void)
{ {
if (!good_checksum(part ^ 1)) return;
err(ECANCELED, "copy p%zu, file '%s'", part ^ 1, fname);
} }
static void static void
cmd_swap(void) cmd_swap(void)
{ {
if (!(good_checksum(0) || good_checksum(1))) return;
err(ECANCELED, "swap parts, file '%s'", fname);
/*
* good_checksum() can set errno, if one
* of the parts is bad. We will reset it.
*/
errno = 0;
} }
static int static int