blob: 090690213e22fec840a7469e6c928d27a660130a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
https://github.com/c-ares/c-ares/commit/d8edb76bece36267c4c55355ae9c7009e131a0e0
From d8edb76bece36267c4c55355ae9c7009e131a0e0 Mon Sep 17 00:00:00 2001
From: Brad House <brad@brad-house.com>
Date: Sun, 17 Dec 2023 11:08:21 -0500
Subject: [PATCH] getrandom() may require sys/random.h on some systems
There is a reported build issue where getrandom() is detected
but compile fails due to a missing prototype. This commit attempts
to resolve that issue.
Fixes Bug: #665
Fix By: Brad House (@bradh352)
---
CMakeLists.txt | 2 ++
configure.ac | 1 +
src/lib/ares_config.h.cmake | 3 +++
src/lib/ares_rand.c | 3 +++
4 files changed, 9 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a8d3eed06..29f5d7ed3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -225,6 +225,7 @@ CHECK_INCLUDE_FILES (sys/select.h HAVE_SYS_SELECT_H)
CHECK_INCLUDE_FILES (sys/stat.h HAVE_SYS_STAT_H)
CHECK_INCLUDE_FILES (sys/time.h HAVE_SYS_TIME_H)
CHECK_INCLUDE_FILES (sys/uio.h HAVE_SYS_UIO_H)
+CHECK_INCLUDE_FILES (sys/random.h HAVE_SYS_RANDOM_H)
CHECK_INCLUDE_FILES (ifaddrs.h HAVE_IFADDRS_H)
CHECK_INCLUDE_FILES (time.h HAVE_TIME_H)
CHECK_INCLUDE_FILES (dlfcn.h HAVE_DLFCN_H)
@@ -323,6 +324,7 @@ CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_SOCKIO_H sys/sockio.h)
CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_TIME_H sys/time.h)
CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_STAT_H sys/stat.h)
CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_UIO_H sys/uio.h)
+CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_RANDOM_H sys/random.h)
CARES_EXTRAINCLUDE_IFSET (HAVE_TIME_H time.h)
CARES_EXTRAINCLUDE_IFSET (HAVE_FCNTL_H fcntl.h)
CARES_EXTRAINCLUDE_IFSET (HAVE_UNISTD_H unistd.h)
diff --git a/configure.ac b/configure.ac
index 7a6b14092..e9c2534cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -574,6 +574,7 @@ AC_CHECK_HEADERS(
sys/ioctl.h \
sys/param.h \
sys/uio.h \
+ sys/random.h \
assert.h \
iphlpapi.h \
netioapi.h \
diff --git a/src/lib/ares_config.h.cmake b/src/lib/ares_config.h.cmake
index c2974dced..3fb85d54f 100644
--- a/src/lib/ares_config.h.cmake
+++ b/src/lib/ares_config.h.cmake
@@ -320,6 +320,9 @@
/* Define to 1 if you have the <sys/param.h> header file. */
#cmakedefine HAVE_SYS_PARAM_H
+/* Define to 1 if you have the <sys/random.h> header file. */
+#cmakedefine HAVE_SYS_RANDOM_H
+
/* Define to 1 if you have the <sys/select.h> header file. */
#cmakedefine HAVE_SYS_SELECT_H
diff --git a/src/lib/ares_rand.c b/src/lib/ares_rand.c
index e6e35ef61..867ca3340 100644
--- a/src/lib/ares_rand.c
+++ b/src/lib/ares_rand.c
@@ -28,6 +28,9 @@
#include "ares.h"
#include "ares_private.h"
#include <stdlib.h>
+#ifdef HAVE_SYS_RANDOM_H
+# include <sys/random.h>
+#endif
typedef enum {
|