cd02f96b87
The current Busybox version (1.36.0) fails to build with some
libc/linux combinations where getrandom() is not available. Two fixes
for glibc already exists upstream, so backport them here. A third
one (submitted upstream, not part of the main branch yet) was needed
to be able to compile with older musl and uClibc versions (or older
kernels).
This fixes the following build failure raised since commit
d68b617993
:
miscutils/seedrng.c:45:24: fatal error: sys/random.h: No such file or directory
#include <sys/random.h>
Fixes:
- http://autobuild.buildroot.net/results/44a0476b86c579e6aa658f156f0292958d40513c
- http://autobuild.buildroot.net/results/ed028160db397581558fd8c96755621dd8298bb1
- https://gitlab.com/buildroot.org/buildroot/-/jobs/4122624008
- https://gitlab.com/buildroot.org/buildroot/-/jobs/4122624034
- https://gitlab.com/buildroot.org/buildroot/-/jobs/4122624044
- https://gitlab.com/buildroot.org/buildroot/-/jobs/4122624048
- https://gitlab.com/buildroot.org/buildroot/-/jobs/4122624051
It also fixes the following (similar) build failure, raised since the
same commit:
miscutils/lib.a(seedrng.o): In function `seedrng_main':
seedrng.c:(.text.seedrng_main+0x26c): undefined reference to `getrandom'
seedrng.c:(.text.seedrng_main+0x2e8): undefined reference to `getrandom'
collect2: error: ld returned 1 exit status
Fixes:
- https://gitlab.com/buildroot.org/buildroot/-/jobs/4122624028
- https://gitlab.com/buildroot.org/buildroot/-/jobs/4122624031
Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
61 lines
1.8 KiB
Diff
61 lines
1.8 KiB
Diff
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
|
|
|