From 44004191cbc1a2a4fc2a60aca215560b5d989b7c Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Wed, 1 Apr 2026 12:19:43 +0100 Subject: lbutils: don't set USE_OPENAT and USE_URANDOM these can be set explicitly in the compiler flags, e.g. make CC="cc -DUSE_OPENAT=1 -DUSE_URANDOM=1" these options, if set to 1, will cause you to use the code as if it were running on non-linux systems such as openbsd. of course, some differences will still exist, but this is useful for portability testing when compiling on linux. Signed-off-by: Leah Rowe --- util/libreboot-utils/Makefile | 1 + util/libreboot-utils/include/common.h | 7 ------- util/libreboot-utils/lib/file.c | 6 +++++- util/libreboot-utils/lib/mkhtemp.c | 9 +++++++-- util/libreboot-utils/lib/rand.c | 6 +----- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/util/libreboot-utils/Makefile b/util/libreboot-utils/Makefile index efa0aedc..f42c4ab6 100644 --- a/util/libreboot-utils/Makefile +++ b/util/libreboot-utils/Makefile @@ -7,6 +7,7 @@ CC = cc HELLCC = clang +OLDCC = $(CC) -DUSE_URANDOM=1 -DUSE_OPENAT CFLAGS = -Os -Wall -Wextra -std=c99 -pedantic -Werror LDFLAGS = diff --git a/util/libreboot-utils/include/common.h b/util/libreboot-utils/include/common.h index a7099f35..b30bcc93 100644 --- a/util/libreboot-utils/include/common.h +++ b/util/libreboot-utils/include/common.h @@ -34,13 +34,6 @@ #define items(x) (sizeof((x)) / sizeof((x)[0])) -/* system prototypes - */ - -#ifndef USE_URANDOM -#define USE_URANDOM 0 -#endif - #define MKHTEMP_RETRY_MAX 512 #define MKHTEMP_SPIN_THRESHOLD 32 diff --git a/util/libreboot-utils/lib/file.c b/util/libreboot-utils/lib/file.c index 3f15aabf..1df5cfb3 100644 --- a/util/libreboot-utils/lib/file.c +++ b/util/libreboot-utils/lib/file.c @@ -22,12 +22,15 @@ long max = pathconf("/", _PC_PATH_MAX); /* for openat2: */ #ifdef __linux__ +#if !defined(USE_OPENAT) || \ + ((USE_OPENAT) < 1) /* if 1: use openat, not openat2 */ #ifndef _GNU_SOURCE #define _GNU_SOURCE 1 #endif #include #include #endif +#endif #include #include @@ -612,7 +615,8 @@ open_file_on_eintr(const char *path, } -#ifdef __linux__ /* we use openat2 on linux */ +#if defined(__linux__) && \ + ((USE_OPENAT) < 1) /* we use openat2 on linux */ int openat_on_eintr(int dirfd, const char *path, int flags, mode_t mode) diff --git a/util/libreboot-utils/lib/mkhtemp.c b/util/libreboot-utils/lib/mkhtemp.c index 11a5bdb9..4e7f6013 100644 --- a/util/libreboot-utils/lib/mkhtemp.c +++ b/util/libreboot-utils/lib/mkhtemp.c @@ -10,6 +10,8 @@ /* for openat2 / fast path: */ #ifdef __linux__ +#if !defined(USE_OPENAT) || \ + ((USE_OPENAT) < 1) /* if 1: use openat, not openat2 */ #ifndef _GNU_SOURCE #define _GNU_SOURCE 1 #endif @@ -22,6 +24,7 @@ #define AT_EMPTY_PATH 0x1000 #endif #endif +#endif #include #include @@ -543,7 +546,8 @@ mkhtemp_try_create(int dirfd, goto err; if (type == MKHTEMP_FILE) { -#ifdef __linux__ +#if defined(__linux__) && \ + (!defined(USE_OPENAT) || ((USE_OPENAT) < 1)) /* try O_TMPFILE fast path */ if (mkhtemp_tmpfile_linux(dirfd, st_dir_first, fname_copy, @@ -652,7 +656,8 @@ err: we still use openat() on bsd, which is still ok with our other mitigations */ -#ifdef __linux__ +#if defined(__linux__) && \ + (!defined(USE_OPENAT) || ((USE_OPENAT) < 1)) int mkhtemp_tmpfile_linux(int dirfd, struct stat *st_dir_first, diff --git a/util/libreboot-utils/lib/rand.c b/util/libreboot-utils/lib/rand.c index 726d5cd2..8e50e110 100644 --- a/util/libreboot-utils/lib/rand.c +++ b/util/libreboot-utils/lib/rand.c @@ -154,7 +154,7 @@ retry_rand: { while (rw_retry(saved_errno, rc = read_on_eintr(fd, - (unsigned char *)buf + off, n - off, 0))); + (unsigned char *)buf + off, n - off))); #elif defined(__linux__) long rc; while (sys_retry(saved_errno, @@ -183,10 +183,6 @@ retry_rand: { reset_caller_errno(0); return; err: -#if defined(USE_URANDOM) && \ - ((USE_URANDOM) > 0) - close_on_eintr(&fd); -#endif (void) with_fallback_errno(ECANCELED); exitf("Randomisierungsfehler"); exit(EXIT_FAILURE); -- cgit v1.2.1