Revert "package: busybox: backport fix for missing getrandom()"
This casues build failures:
..../build/busybox-1.36.0/Makefile.flags:165: *** unterminated call to function 'shell': missing ')'. Stop.
This reverts commit 441c44626f
.
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
parent
b20eb56440
commit
4938d2d232
@ -1,39 +0,0 @@
|
||||
From 200a9669fbf6f06894e4243cccc9fc11a1a6073a Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Mon, 10 Apr 2023 17:26:04 +0200
|
||||
Subject: [PATCH] seedrng: fix for glibc <= 2.24 not providing getrandom()
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Upstream: https://git.busybox.net/busybox/commit/?id=200a9669fbf6f06894e4243cccc9fc11a1a6073a
|
||||
---
|
||||
miscutils/seedrng.c | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/miscutils/seedrng.c b/miscutils/seedrng.c
|
||||
index 967741dc7..7cc855141 100644
|
||||
--- a/miscutils/seedrng.c
|
||||
+++ b/miscutils/seedrng.c
|
||||
@@ -45,6 +45,20 @@
|
||||
#include <sys/random.h>
|
||||
#include <sys/file.h>
|
||||
|
||||
+/* Fix up glibc <= 2.24 not having getrandom() */
|
||||
+#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ <= 24
|
||||
+#include <sys/syscall.h>
|
||||
+# define getrandom(...) bb_getrandom(__VA_ARGS__)
|
||||
+static ssize_t getrandom(void *buffer, size_t length, unsigned flags)
|
||||
+{
|
||||
+# if defined(__NR_getrandom)
|
||||
+ return syscall(__NR_getrandom, buffer, length, flags);
|
||||
+# else
|
||||
+ return ENOSYS;
|
||||
+# endif
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#ifndef GRND_INSECURE
|
||||
#define GRND_INSECURE 0x0004 /* Apparently some headers don't ship with this yet. */
|
||||
#endif
|
||||
--
|
||||
2.39.1
|
||||
|
@ -1,60 +0,0 @@
|
||||
From cb57abb46f06f4ede8d9ccbdaac67377fdf416cf Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Devoogdt <thomas@devoogdt.com>
|
||||
Date: Mon, 10 Apr 2023 19:58:15 +0200
|
||||
Subject: [PATCH] seedrng: fix for glibc <= 2.24 not providing random header
|
||||
|
||||
- dropped the wrong define (not sure why it was there)
|
||||
- <sys/random.h> not available if glibc <= 2.24
|
||||
- GRND_NONBLOCK not defined if <sys/random.h> not included
|
||||
- ret < 0 && errno == ENOSYS has to be true to get creditable set
|
||||
|
||||
Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Upstream: https://git.busybox.net/busybox/commit/?id=cb57abb46f06f4ede8d9ccbdaac67377fdf416cf
|
||||
---
|
||||
miscutils/seedrng.c | 14 ++++++++++----
|
||||
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/miscutils/seedrng.c b/miscutils/seedrng.c
|
||||
index 7cc855141..3bf6e2ea7 100644
|
||||
--- a/miscutils/seedrng.c
|
||||
+++ b/miscutils/seedrng.c
|
||||
@@ -42,25 +42,31 @@
|
||||
#include "libbb.h"
|
||||
|
||||
#include <linux/random.h>
|
||||
-#include <sys/random.h>
|
||||
#include <sys/file.h>
|
||||
|
||||
/* Fix up glibc <= 2.24 not having getrandom() */
|
||||
#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ <= 24
|
||||
#include <sys/syscall.h>
|
||||
-# define getrandom(...) bb_getrandom(__VA_ARGS__)
|
||||
static ssize_t getrandom(void *buffer, size_t length, unsigned flags)
|
||||
{
|
||||
# if defined(__NR_getrandom)
|
||||
return syscall(__NR_getrandom, buffer, length, flags);
|
||||
# else
|
||||
- return ENOSYS;
|
||||
+ errno = ENOSYS;
|
||||
+ return -1;
|
||||
# endif
|
||||
}
|
||||
+#else
|
||||
+#include <sys/random.h>
|
||||
+#endif
|
||||
+
|
||||
+/* Apparently some headers don't ship with this yet. */
|
||||
+#ifndef GRND_NONBLOCK
|
||||
+#define GRND_NONBLOCK 0x0001
|
||||
#endif
|
||||
|
||||
#ifndef GRND_INSECURE
|
||||
-#define GRND_INSECURE 0x0004 /* Apparently some headers don't ship with this yet. */
|
||||
+#define GRND_INSECURE 0x0004
|
||||
#endif
|
||||
|
||||
#define DEFAULT_SEED_DIR "/var/lib/seedrng"
|
||||
--
|
||||
2.39.1
|
||||
|
@ -1,106 +0,0 @@
|
||||
From b8d32dba741daea2ed01a0da32083b1bc994aa04 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rapha=C3=ABl=20M=C3=A9lotte?= <raphael.melotte@mind.be>
|
||||
Date: Tue, 18 Apr 2023 15:54:43 +0200
|
||||
Subject: [PATCH] seedrng: fix getrandom() detection for non-glibc libc
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
glibc <= 2.24 does not provide getrandom(). A check for it has been
|
||||
added in 200a9669fbf6f06894e4243cccc9fc11a1a6073a and fixed in
|
||||
cb57abb46f06f4ede8d9ccbdaac67377fdf416cf.
|
||||
|
||||
However, building with a libc other than glibc can lead to the same
|
||||
problem as not every other libc has getrandom() either:
|
||||
|
||||
- uClibc provides it from v1.0.2 onwards, but requires to define
|
||||
_GNU_SOURCE (all versions - we already define it by default), and
|
||||
stddef to be included first (when using uClibc < 1.0.35 - we already
|
||||
include it through libbb.h).
|
||||
|
||||
- musl libc has getrandom(), but only from version 1.1.20 onwards. As
|
||||
musl does not provide __MUSL__ or version information, it's not
|
||||
possible to check for it like we did for glibc.
|
||||
|
||||
All of this makes it difficult (or impossible in case of musl) to
|
||||
check what we need to do to have getrandom() based on each libc
|
||||
versions.
|
||||
|
||||
On top of that, getrandom() is also not available on older kernels. As
|
||||
an example, when using a 3.10 kernel with uClibc 1.0.26, getrandom()
|
||||
is declared so compiling works, but it fails at link time because
|
||||
getrandom() is not defined.
|
||||
|
||||
To make it easier, take a similar approach to what was done for the
|
||||
crypt library: try to build a sample program to see if we have
|
||||
getrandom().
|
||||
|
||||
Based on the new Makefile variable, we now either use the
|
||||
libc-provided getrandom() when it's available, or use our own
|
||||
implementation when it's not (like it was the case already for glibc <
|
||||
2.25).
|
||||
|
||||
This should fix compiling with many libc/kernel combinations.
|
||||
|
||||
Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>
|
||||
Upstream: http://lists.busybox.net/pipermail/busybox/2023-April/090285.html
|
||||
---
|
||||
Note that I was not able to test every single combination, but I could
|
||||
confirm it builds successfully for:
|
||||
uClibc 10.0.24, linux headers 3.10 (libc getrandom NOT used)
|
||||
uClibc 1.0.36, linux headers 4.9 (libc getrandom used)
|
||||
musl 1.1.16, linux headers 4.12 (libc getrandom NOT used)
|
||||
musl 1.2.1, linux headers (libc getrandom used)
|
||||
glibc 2.25, linux headers 4.10 (libc getrandom used)
|
||||
|
||||
Makefile.flags | 7 +++++++
|
||||
miscutils/seedrng.c | 8 ++++----
|
||||
2 files changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Makefile.flags b/Makefile.flags
|
||||
index 1cec5ba20..88c11862f 100644
|
||||
--- a/Makefile.flags
|
||||
+++ b/Makefile.flags
|
||||
@@ -161,6 +161,13 @@ ifeq ($(RT_AVAILABLE),y)
|
||||
LDLIBS += rt
|
||||
endif
|
||||
|
||||
+# Not all libc versions have getrandom, so check for it.
|
||||
+HAVE_GETRANDOM := $(shell printf '#include <stddef.h>\n#include <sys/random.h>\nint main(void){char buf[256];\ngetrandom(buf,sizeof(buf),GRND_NONBLOCK);}' >bb_libtest.c; $(CC) $(CFLAGS) $(CFLAGS_busybox) -D_GNU_SOURCE -o /dev/null bb_libtest.c >/dev/null 2>&1 && echo "y"; rm bb_libtest.c)
|
||||
+
|
||||
+ifeq ($(HAVE_GETRANDOM),y)
|
||||
+CFLAGS += -DHAVE_GETRANDOM
|
||||
+endif
|
||||
+
|
||||
# libpam may use libpthread, libdl and/or libaudit.
|
||||
# On some platforms that requires an explicit -lpthread, -ldl, -laudit.
|
||||
# However, on *other platforms* it fails when some of those flags
|
||||
diff --git a/miscutils/seedrng.c b/miscutils/seedrng.c
|
||||
index 3bf6e2ea7..2f1e18c32 100644
|
||||
--- a/miscutils/seedrng.c
|
||||
+++ b/miscutils/seedrng.c
|
||||
@@ -44,8 +44,10 @@
|
||||
#include <linux/random.h>
|
||||
#include <sys/file.h>
|
||||
|
||||
-/* Fix up glibc <= 2.24 not having getrandom() */
|
||||
-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ <= 24
|
||||
+/* Fix up some libc (e.g. glibc <= 2.24) not having getrandom() */
|
||||
+#if defined HAVE_GETRANDOM
|
||||
+#include <sys/random.h>
|
||||
+#else /* No getrandom */
|
||||
#include <sys/syscall.h>
|
||||
static ssize_t getrandom(void *buffer, size_t length, unsigned flags)
|
||||
{
|
||||
@@ -56,8 +58,6 @@ static ssize_t getrandom(void *buffer, size_t length, unsigned flags)
|
||||
return -1;
|
||||
# endif
|
||||
}
|
||||
-#else
|
||||
-#include <sys/random.h>
|
||||
#endif
|
||||
|
||||
/* Apparently some headers don't ship with this yet. */
|
||||
--
|
||||
2.39.1
|
||||
|
Loading…
Reference in New Issue
Block a user