summaryrefslogtreecommitdiff
path: root/util/libreboot-utils/nvmutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/libreboot-utils/nvmutil.c')
-rw-r--r--util/libreboot-utils/nvmutil.c134
1 files changed, 0 insertions, 134 deletions
diff --git a/util/libreboot-utils/nvmutil.c b/util/libreboot-utils/nvmutil.c
deleted file mode 100644
index 67b01ae7..00000000
--- a/util/libreboot-utils/nvmutil.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* SPDX-License-Identifier: MIT ( >:3 )
- * Copyright (c) 2022-2026 Leah Rowe <leah@libreboot.org> /| |\
- * / \
- * This tool lets you modify Intel GbE NVM (Gigabit Ethernet
- * Non-Volatile Memory) images, e.g. change the MAC address.
- * These images configure your Intel Gigabit Ethernet adapter.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "include/common.h"
-
-static void
-exit_cleanup(void);
-
-int
-main(int argc, char *argv[])
-{
-#ifndef __linux__
-#error This code is currently buggy on BSD systems. Only use on Linux.
-#endif
- struct xstate *x;
- struct commands *cmd;
- struct xfile *f;
- size_t c;
-
- (void) lbsetprogname(argv[0]);
- if (argc < 3)
- usage();
-
- (void) errhook(exit_cleanup);
-
-#ifdef __OpenBSD
- /* https://man.openbsd.org/pledge.2 */
- /* https://man.openbsd.org/unveil.2 */
- if (pledge("stdio flock rpath wpath cpath unveil", NULL) == -1)
- exitf("pledge");
- if (unveil("/dev/urandom", "r") == -1)
- exitf("unveil");
-#endif
-
-#ifndef S_ISREG
- exitf(
- "Can't determine file types (S_ISREG undefined)");
-#endif
-#if ((CHAR_BIT) != 8)
- exitf("Unsupported char size");
-#endif
-
- if ((x = xstart(argc, argv)) == NULL)
- exitf("NULL state on init");
-
- /* parse user command */
-/* TODO: CHECK ACCESSES VIA xstatus() */
- set_cmd(argc, argv);
- set_cmd_args(argc, argv);
-
- cmd = &x->cmd[x->i];
- f = &x->f;
-
-#ifdef __OpenBSD__
- if ((cmd->flags & O_ACCMODE) == O_RDONLY) {
- if (unveil(f->fname, "r") == -1)
- exitf("unveil");
- } else {
- if (unveil(f->fname, "rwc") == -1)
- exitf("unveil");
- }
-
- if (unveil(f->tname, "rwc") == -1)
- exitf("unveil");
- if (unveil(NULL, NULL) == -1)
- exitf("unveil");
- if (pledge("stdio flock rpath wpath cpath", NULL) == -1)
- exitf("pledge");
-#endif
-
- if (cmd->run == NULL)
- exitf("Command not set");
-
- sanitize_command_list();
- open_gbe_file();
- copy_gbe();
- read_checksums();
- cmd->run();
-
- for (c = 0; c < items(x->cmd); c++)
- x->cmd[c].run = cmd_helper_err;
-
- if ((cmd->flags & O_ACCMODE) == O_RDWR)
- write_to_gbe_bin();
-
- exit_cleanup();
- if (f->io_err_gbe_bin)
- exitf("%s: error writing final file");
-
- free_and_set_null(&f->tname);
-
- return EXIT_SUCCESS;
-}
-
-static void
-exit_cleanup(void)
-{
- struct xstate *x;
- struct xfile *f;
-
- x = xstatus();
- if (x == NULL)
- return;
-
- f = &x->f;
-
- /* close fds if still open */
- xclose(&f->tmp_fd);
- xclose(&f->gbe_fd);
-
- /* unlink tmpfile if it exists */
- if (f->tname != NULL) {
- (void) unlink(f->tname);
- free_and_set_null(&f->tname);
- }
-}