diff options
Diffstat (limited to 'util')
| -rw-r--r-- | util/libreboot-utils/include/common.h | 4 | ||||
| -rw-r--r-- | util/libreboot-utils/lib/string.c | 8 | ||||
| -rw-r--r-- | util/libreboot-utils/lib/usage.c | 2 | ||||
| -rw-r--r-- | util/libreboot-utils/lottery.c | 30 | ||||
| -rw-r--r-- | util/libreboot-utils/mkhtemp.c | 5 | ||||
| -rw-r--r-- | util/libreboot-utils/nvmutil.c | 5 |
6 files changed, 39 insertions, 15 deletions
diff --git a/util/libreboot-utils/include/common.h b/util/libreboot-utils/include/common.h index 1932b2da..6956adb1 100644 --- a/util/libreboot-utils/include/common.h +++ b/util/libreboot-utils/include/common.h @@ -492,7 +492,7 @@ void usage(void); int set_errno(int saved_errno, int fallback); void err_exit(int nvm_errval, const char *msg, ...); 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 err_mkhtemp(int errval, const char *msg, ...); @@ -561,7 +561,7 @@ int mkdirat_on_eintr(int dirfd, const char *pathname, mode_t mode); int if_err(int condition, int errval); int if_err_sys(int condition); -char *lbgetprogname(char *argv0); +char *lbsetprogname(char *argv0); /* asserts */ diff --git a/util/libreboot-utils/lib/string.c b/util/libreboot-utils/lib/string.c index 76141c58..d5e2de85 100644 --- a/util/libreboot-utils/lib/string.c +++ b/util/libreboot-utils/lib/string.c @@ -310,7 +310,7 @@ err_exit(int nvm_errval, const char *msg, ...) if (!errno) saved_errno = errno = ECANCELED; - if ((p = getnvmprogname()) != NULL) + if ((p = lbgetprogname()) != NULL) fprintf(stderr, "%s: ", p); va_start(args, msg); @@ -357,14 +357,14 @@ no_op(void) } const char * -getnvmprogname(void) +lbgetprogname(void) { static char *rval = NULL; static char *p; static int setname = 0; if (!setname) { - if ((rval = lbgetprogname(NULL)) == NULL) + if ((rval = lbsetprogname(NULL)) == NULL) return NULL; p = strrchr(rval, '/'); @@ -383,7 +383,7 @@ getnvmprogname(void) way, returns the string */ char * -lbgetprogname(char *argv0) +lbsetprogname(char *argv0) { static int setname = 0; static char *progname = NULL; diff --git a/util/libreboot-utils/lib/usage.c b/util/libreboot-utils/lib/usage.c index ebec119e..7c9fa34b 100644 --- a/util/libreboot-utils/lib/usage.c +++ b/util/libreboot-utils/lib/usage.c @@ -11,7 +11,7 @@ void usage(void) { - const char *util = getnvmprogname(); + const char *util = lbgetprogname(); fprintf(stderr, "Modify Intel GbE NVM images e.g. set MAC\n" diff --git a/util/libreboot-utils/lottery.c b/util/libreboot-utils/lottery.c index cbe8a871..2ead8563 100644 --- a/util/libreboot-utils/lottery.c +++ b/util/libreboot-utils/lottery.c @@ -21,13 +21,16 @@ main(int argc, char **argv) { int same = 0; char *buf; - (void) argc, (void) argv; - xpledgex("stdio", NULL); (void) errhook(exit_cleanup); + if (lbsetprogname(argv[0]) == NULL) + err_exit(errno, "could not set progname"); + + /* https://man.openbsd.org/pledge.2 */ + xpledgex("stdio", NULL); - buf = mkrbuf(BUFSIZ + 1); + buf = mkrbuf(BUFSIZ); if (!memcmp(buf, buf + (BUFSIZ >> 1), BUFSIZ >> 1)) same = 1; @@ -82,5 +85,26 @@ spew_buf(const void *data, size_t len) static 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; } diff --git a/util/libreboot-utils/mkhtemp.c b/util/libreboot-utils/mkhtemp.c index 5be5a38a..04ce1993 100644 --- a/util/libreboot-utils/mkhtemp.c +++ b/util/libreboot-utils/mkhtemp.c @@ -62,8 +62,7 @@ main(int argc, char *argv[]) int type = MKHTEMP_FILE; (void) errhook(exit_cleanup); - - if (lbgetprogname(argv[0]) == NULL) + if (lbsetprogname(argv[0]) == NULL) err_exit(errno, "could not set progname"); /* https://man.openbsd.org/pledge.2 */ @@ -143,7 +142,7 @@ main(int argc, char *argv[]) err_usage: err_exit(EINVAL, - "usage: %s [-d] [-p dir] [template]\n", getnvmprogname()); + "usage: %s [-d] [-p dir] [template]\n", lbgetprogname()); } static void diff --git a/util/libreboot-utils/nvmutil.c b/util/libreboot-utils/nvmutil.c index bab1945d..49d81a01 100644 --- a/util/libreboot-utils/nvmutil.c +++ b/util/libreboot-utils/nvmutil.c @@ -33,10 +33,11 @@ main(int argc, char *argv[]) size_t c; (void) errhook(exit_cleanup); - - if (lbgetprogname(argv[0]) == NULL) + if (lbsetprogname(argv[0]) == NULL) 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); xunveilx("/dev/urandom", "r"); |
