Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-03-29 07:09:06 +01:00
parent ab79f2b113
commit 546565f321
6 changed files with 39 additions and 15 deletions
+2 -2
View File
@@ -492,7 +492,7 @@ void usage(void);
int set_errno(int saved_errno, int fallback); int set_errno(int saved_errno, int fallback);
void err_exit(int nvm_errval, const char *msg, ...); void err_exit(int nvm_errval, const char *msg, ...);
func_t errhook(func_t ptr); /* hook function for cleanup on err */ func_t errhook(func_t ptr); /* hook function for cleanup on err */
const char *getnvmprogname(void); const char *lbgetprogname(void);
void no_op(void); void no_op(void);
void err_mkhtemp(int errval, const char *msg, ...); void err_mkhtemp(int errval, const char *msg, ...);
@@ -561,7 +561,7 @@ int mkdirat_on_eintr(int dirfd,
const char *pathname, mode_t mode); const char *pathname, mode_t mode);
int if_err(int condition, int errval); int if_err(int condition, int errval);
int if_err_sys(int condition); int if_err_sys(int condition);
char *lbgetprogname(char *argv0); char *lbsetprogname(char *argv0);
/* asserts */ /* asserts */
+4 -4
View File
@@ -310,7 +310,7 @@ err_exit(int nvm_errval, const char *msg, ...)
if (!errno) if (!errno)
saved_errno = errno = ECANCELED; saved_errno = errno = ECANCELED;
if ((p = getnvmprogname()) != NULL) if ((p = lbgetprogname()) != NULL)
fprintf(stderr, "%s: ", p); fprintf(stderr, "%s: ", p);
va_start(args, msg); va_start(args, msg);
@@ -357,14 +357,14 @@ no_op(void)
} }
const char * const char *
getnvmprogname(void) lbgetprogname(void)
{ {
static char *rval = NULL; static char *rval = NULL;
static char *p; static char *p;
static int setname = 0; static int setname = 0;
if (!setname) { if (!setname) {
if ((rval = lbgetprogname(NULL)) == NULL) if ((rval = lbsetprogname(NULL)) == NULL)
return NULL; return NULL;
p = strrchr(rval, '/'); p = strrchr(rval, '/');
@@ -383,7 +383,7 @@ getnvmprogname(void)
way, returns the string way, returns the string
*/ */
char * char *
lbgetprogname(char *argv0) lbsetprogname(char *argv0)
{ {
static int setname = 0; static int setname = 0;
static char *progname = NULL; static char *progname = NULL;
+1 -1
View File
@@ -11,7 +11,7 @@
void void
usage(void) usage(void)
{ {
const char *util = getnvmprogname(); const char *util = lbgetprogname();
fprintf(stderr, fprintf(stderr,
"Modify Intel GbE NVM images e.g. set MAC\n" "Modify Intel GbE NVM images e.g. set MAC\n"
+27 -3
View File
@@ -21,13 +21,16 @@ main(int argc, char **argv)
{ {
int same = 0; int same = 0;
char *buf; char *buf;
(void) argc, (void) argv; (void) argc, (void) argv;
xpledgex("stdio", NULL);
(void) errhook(exit_cleanup); (void) errhook(exit_cleanup);
if (lbsetprogname(argv[0]) == NULL)
err_exit(errno, "could not set progname");
buf = mkrbuf(BUFSIZ + 1); /* https://man.openbsd.org/pledge.2 */
xpledgex("stdio", NULL);
buf = mkrbuf(BUFSIZ);
if (!memcmp(buf, buf + (BUFSIZ >> 1), BUFSIZ >> 1)) if (!memcmp(buf, buf + (BUFSIZ >> 1), BUFSIZ >> 1))
same = 1; same = 1;
@@ -82,5 +85,26 @@ spew_buf(const void *data, size_t len)
static void static void
exit_cleanup(void) exit_cleanup(void)
{ {
#if defined(__OpenBSD__)
fprintf(stderr, "OpenBSD wins\n");
#elif defined(__FreeBSD__)
fprintf(stderr, "FreeBSD wins\n");
#elif defined(__NetBSD__)
fprintf(stderr, "NetBSD wins\n");
#elif defined(__APPLE__)
fprintf(stderr, "MacOS wins\n");
#elif defined(__DragonFly__)
fprintf(stderr, "DragonFly BSD wins\n");
#elif defined(__linux__)
#if defined(__GLIBC__)
fprintf(stderr, "GNU/Linux wins\n");
#elif defined(__MUSL__)
fprintf(stderr, "Rich Felker wins\n");
#else
fprintf(stderr, "Linux wins\n");
#endif
#else
fprintf(stderr, "Your operating system wins\n");
#endif
return; return;
} }
+2 -3
View File
@@ -62,8 +62,7 @@ main(int argc, char *argv[])
int type = MKHTEMP_FILE; int type = MKHTEMP_FILE;
(void) errhook(exit_cleanup); (void) errhook(exit_cleanup);
if (lbsetprogname(argv[0]) == NULL)
if (lbgetprogname(argv[0]) == NULL)
err_exit(errno, "could not set progname"); err_exit(errno, "could not set progname");
/* https://man.openbsd.org/pledge.2 */ /* https://man.openbsd.org/pledge.2 */
@@ -143,7 +142,7 @@ main(int argc, char *argv[])
err_usage: err_usage:
err_exit(EINVAL, err_exit(EINVAL,
"usage: %s [-d] [-p dir] [template]\n", getnvmprogname()); "usage: %s [-d] [-p dir] [template]\n", lbgetprogname());
} }
static void static void
+3 -2
View File
@@ -33,10 +33,11 @@ main(int argc, char *argv[])
size_t c; size_t c;
(void) errhook(exit_cleanup); (void) errhook(exit_cleanup);
if (lbsetprogname(argv[0]) == NULL)
if (lbgetprogname(argv[0]) == NULL)
err_exit(errno, "could not set progname"); err_exit(errno, "could not set progname");
/* https://man.openbsd.org/pledge.2 */
/* https://man.openbsd.org/unveil.2 */
xpledgex("stdio flock rpath wpath cpath unveil", NULL); xpledgex("stdio flock rpath wpath cpath unveil", NULL);
xunveilx("/dev/urandom", "r"); xunveilx("/dev/urandom", "r");