mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-16 23:08:49 +02:00
@@ -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 */
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user