diff --git a/cjdns.spec b/cjdns.spec index d15ee9c..c0cd415 100644 --- a/cjdns.spec +++ b/cjdns.spec @@ -135,6 +135,8 @@ Patch16: cjdns.python3.patch # patch build to use system libuv Patch18: cjdns.libuv.patch Patch19: cjdns.fuzz.patch +# patch to use /proc/sys/kernel/random/uuid instead of sysctl +Patch20: cjdns.sysctl.patch BuildRequires: nodejs, nodejs-ronn, python2 @@ -240,7 +242,7 @@ cp %{SOURCE2} contrib/systemd %if 0%{use_embedded} # disable CPU opt -%else !use_embedded +%else # use system nacl library if provided. if test -x %{nacl_lib}; then %if 0%{use_libsodium} @@ -278,6 +280,7 @@ cp node_build/dependencies/libuv/include/tree.h dependencies/uv_tree.h rm -rf node_build/dependencies/libuv %endif %patch19 -p1 -b .fuzz +%patch20 -p1 -b .sysctl cp %{SOURCE1} README_Fedora.md @@ -355,7 +358,6 @@ NO_TEST=1 CJDNS_RELEASE_VERSION="%{name}-%{version}-%{release}" ./do # https://github.com/cjdelisle/cjdns/commits/master/node_build/dependencies/libuv %check -# test suite is executed in %%build build_linux/test_testcjdroute_c all >test.out %install diff --git a/cjdns.sysctl.patch b/cjdns.sysctl.patch new file mode 100644 index 0000000..7de4580 --- /dev/null +++ b/cjdns.sysctl.patch @@ -0,0 +1,49 @@ +diff -up ./crypto/random/seed/LinuxRandomUuidSysctlRandomSeed.c.sysctl ./crypto/random/seed/LinuxRandomUuidSysctlRandomSeed.c +--- ./crypto/random/seed/LinuxRandomUuidSysctlRandomSeed.c.sysctl 2019-05-02 04:02:32.000000000 -0400 ++++ ./crypto/random/seed/LinuxRandomUuidSysctlRandomSeed.c 2019-07-31 15:43:45.626839153 -0400 +@@ -19,20 +19,39 @@ + #include "util/Hex.h" + + #include +-#include +-#include ++#include + + static int getUUID(uint64_t output[2]) + { +- int mib[] = { CTL_KERN, KERN_RANDOM, RANDOM_UUID }; +- size_t sixteen = 16; +- ++ uint8_t uuid[40]; + Bits_memset(output, 0, 16); +- if (sysctl(mib, 3, output, &sixteen, NULL, 0) ++ int fd = open("/proc/sys/kernel/random/uuid",O_RDONLY); ++ if (fd < 0) ++ { ++ return -1; ++ } ++ int rc = read(fd,uuid,36); ++ close(fd); ++ if (rc < 32) ++ { ++ return -1; ++ } ++ uuid[rc] = 0; ++ /* strip '-' */ ++ int i,j = 0; ++ for (i = 0; uuid[i] != 0; ++i) { ++ if (uuid[i] != '-') ++ { ++ uuid[j++] = uuid[i]; ++ } ++ } ++ uuid[j] = 0; ++ if (Hex_decode((uint8_t*) output, 16, uuid, j) != 16 + || Bits_isZero(output, 16)) + { + return -1; + } ++ + return 0; + } +