--- /dev/null
+*.la
+*.lo
+*.o
+Makefile
+Makefile.in
--- /dev/null
+noinst_LTLIBRARIES = libarc4random.la
+libarc4random_la_SOURCES = arc4random.c arc4random.h \
+ arc4random_uniform.c \
+ bsd-getentropy.c \
+ includes.h \
+ log.h
rs->rs_have -= sizeof(*val);
}
+#include <pthread.h>
+static pthread_mutex_t arc4mutex = PTHREAD_MUTEX_INITIALIZER;
+
uint32_t
arc4random(void)
{
#include <signal.h>
/* OpenSSH isn't multithreaded */
-#define _ARC4_LOCK()
-#define _ARC4_UNLOCK()
+#define _ARC4_LOCK() pthread_mutex_lock(&arc4mutex);
+#define _ARC4_UNLOCK() pthread_mutex_unlock(&arc4mutex);
#define _ARC4_ATFORK(f)
static inline void
--- /dev/null
+#pragma once
+
+#include <inttypes.h>
+
+extern "C" {
+uint32_t arc4random(void);
+void arc4random_buf(void *buf, size_t nbytes);
+uint32_t arc4random_uniform(uint32_t upper_bound);
+}
--- /dev/null
+#include "config.h"
+
+#ifdef HAVE_GETRANDOM
+#include <sys/random.h>
+#endif
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#define seed_from_prngd(a, b) -1
+
+uint32_t arc4random(void);
+void arc4random_buf(void *buf, size_t nbytes);
+uint32_t arc4random_uniform(uint32_t upper_bound);
+
+#define DEF_WEAK(x)
--- /dev/null
+#define fatal(...) do { fprintf(stderr, __VA_ARGS__); abort(); } while (0)