53 lines
1.2 KiB
Text
53 lines
1.2 KiB
Text
Index: lib/uuid/gen_uuid.c
|
|
--- lib/uuid/gen_uuid.c.orig
|
|
+++ lib/uuid/gen_uuid.c
|
|
@@ -167,8 +167,17 @@ static int get_random_fd(void)
|
|
return fd;
|
|
}
|
|
|
|
-
|
|
+#ifdef __OpenBSD__
|
|
/*
|
|
+ * On OpenBSD, arc4random does not require a device node, so we can
|
|
+ * use it always.
|
|
+ */
|
|
+static void get_random_bytes(void *buf, int nbytes)
|
|
+{
|
|
+ arc4random_buf(buf, nbytes);
|
|
+}
|
|
+#else
|
|
+/*
|
|
* Generate a series of random bytes. Use /dev/urandom if possible,
|
|
* and if not, use srandom/random.
|
|
*/
|
|
@@ -213,6 +222,7 @@ static void get_random_bytes(void *buf, int nbytes)
|
|
|
|
return;
|
|
}
|
|
+#endif
|
|
|
|
/*
|
|
* Get the ethernet hardware address, if we can find it...
|
|
@@ -679,7 +689,17 @@ void uuid_generate_random(uuid_t out)
|
|
}
|
|
|
|
|
|
+#ifdef __OpenBSD__
|
|
/*
|
|
+ * On OpenBSD, arc4random does not require a device node, so we can
|
|
+ * use it always.
|
|
+ */
|
|
+void uuid_generate(uuid_t out)
|
|
+{
|
|
+ uuid_generate_random(out);
|
|
+}
|
|
+#else
|
|
+/*
|
|
* This is the generic front-end to uuid_generate_random and
|
|
* uuid_generate_time. It uses uuid_generate_random only if
|
|
* /dev/urandom is available, since otherwise we won't have
|
|
@@ -692,3 +712,4 @@ void uuid_generate(uuid_t out)
|
|
else
|
|
uuid_generate_time(out);
|
|
}
|
|
+#endif
|