kumquat-buildroot/package/busybox/0006-seedrng-fix-for-glibc-2.24-not-providing-random-head.patch

61 lines
1.8 KiB
Diff
Raw Normal View History

package: busybox: backport fix for missing getrandom() 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 d68b617993bd2f5c82a4936ed1e24e4fec6b94a2: 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>
2023-05-09 13:58:29 +02:00
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