util/nvmutil: guard against running twice

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-03-18 00:16:01 +00:00
parent 6def381e3c
commit 2723a9ccd8
2 changed files with 21 additions and 0 deletions

View File

@@ -1189,9 +1189,29 @@ cmd_helper_cat128(void) {
void
check_cmd(void (*fn)(void), const char *name)
{
unsigned long i;
if (x->cmd[x->i].run != fn)
err(ECANCELED, "Running %s, but cmd %s is set",
name, x->cmd[x->i].str);
/*
* In addition to making sure we ran
* the right command, we now disable
* all commands from running again
*
* the _nop function will just call
* err() immediately
*/
for (i = 0; i < items(x->cmd); i++)
x->cmd[i].run = cmd_helper_err;
}
void
cmd_helper_err(void)
{
err(ECANCELED, "Erroneously running command twice");
}
void

View File

@@ -389,6 +389,7 @@ void cat(unsigned long nff);
void cat_buf(unsigned char *b);
void check_cmd(void (*fn)(void), const char *name);
void cmd_helper_err(void);
/*
* After command processing, write