From 9f53057b51c9d7ce68c240c21b459dc0b7d6acaf Mon Sep 17 00:00:00 2001 From: Gleb Popov <6yearold@gmail.com> Date: Thu, 25 Feb 2021 09:49:07 +0300 Subject: [PATCH] Add userspace implementation of getrandom() for FreeBSD 11 --- src/pipewire/impl-core.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/pipewire/impl-core.c b/src/pipewire/impl-core.c index 5e9ae6b30..d491f994a 100644 --- a/src/pipewire/impl-core.c +++ b/src/pipewire/impl-core.c @@ -29,6 +29,24 @@ #endif #include +#ifdef __FreeBSD__ +#include +#include +// FreeBSD versions < 12 do not have getrandom() syscall +// Give a poor-man implementation here +// Can be removed after September 30, 2021 +#if __FreeBSD_version < 1200000 +ssize_t getrandom(void *buf, size_t buflen, unsigned int flags) { + int fd = open("/dev/random", O_CLOEXEC); + if (fd < 0) + return -1; + ssize_t bytes = read(fd, buf, buflen); + close(fd); + return bytes; +} +#endif +#endif + #include #include "pipewire/impl.h"