diff options
| author | Leah Rowe <leah@libreboot.org> | 2026-03-18 00:16:01 +0000 |
|---|---|---|
| committer | Leah Rowe <leah@libreboot.org> | 2026-03-18 00:16:01 +0000 |
| commit | 2723a9ccd8e2167b1c5547a1cf8cd6d651613d28 (patch) | |
| tree | 3a1ee099e22aef41bf02d218b383a1b0495e8175 /util | |
| parent | 6def381e3c9d98b16361d49a9949505e62b9cc13 (diff) | |
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'util')
| -rw-r--r-- | util/nvmutil/nvmutil.c | 20 | ||||
| -rw-r--r-- | util/nvmutil/nvmutil.h | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 13e9113a..4e4d75b3 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -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 diff --git a/util/nvmutil/nvmutil.h b/util/nvmutil/nvmutil.h index d02d2d7f..ce38772c 100644 --- a/util/nvmutil/nvmutil.h +++ b/util/nvmutil/nvmutil.h @@ -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 |
