diff options
Diffstat (limited to 'user/networkmanager/random.patch')
-rw-r--r-- | user/networkmanager/random.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/user/networkmanager/random.patch b/user/networkmanager/random.patch new file mode 100644 index 000000000..30acd9c3b --- /dev/null +++ b/user/networkmanager/random.patch @@ -0,0 +1,50 @@ +From: Gottox @ Void + +diff --git shared/n-dhcp4/src/n-dhcp4-c-probe.c shared/n-dhcp4/src/n-dhcp4-c-probe.c +index 308cff830..9463528b1 100644 +--- a/shared/n-dhcp4/src/n-dhcp4-c-probe.c ++++ b/shared/n-dhcp4/src/n-dhcp4-c-probe.c +@@ -362,8 +362,12 @@ static void n_dhcp4_client_probe_config_initialize_random_seed(NDhcp4ClientProbe + seed16v[1] = (u64 >> 16) ^ (u64 >> 0); + seed16v[2] = (u64 >> 32) ^ (u64 >> 16); + ++#ifdef __GLIBC__ + r = seed48_r(seed16v, &config->entropy); + c_assert(!r); ++#else ++ memcpy(config->entropy, seed16v, sizeof seed16v); ++#endif + } + + /** +@@ -377,10 +381,14 @@ static void n_dhcp4_client_probe_config_initialize_random_seed(NDhcp4ClientProbe + */ + uint32_t n_dhcp4_client_probe_config_get_random(NDhcp4ClientProbeConfig *config) { + long int result; ++#ifdef __GLIBC__ + int r; + + r = mrand48_r(&config->entropy, &result); + c_assert(!r); ++#else ++ result = jrand48(config->entropy); ++#endif + + return result; + }; +diff --git shared/n-dhcp4/src/n-dhcp4-private.h shared/n-dhcp4/src/n-dhcp4-private.h +index c38ddbfc8..fb4880771 100644 +--- a/shared/n-dhcp4/src/n-dhcp4-private.h ++++ b/shared/n-dhcp4/src/n-dhcp4-private.h +@@ -259,7 +259,11 @@ struct NDhcp4ClientProbeConfig { + bool inform_only; + bool init_reboot; + struct in_addr requested_ip; ++#ifdef __GLIBC__ + struct drand48_data entropy; /* entropy pool */ ++#else ++ unsigned short entropy[3]; /* entropy pool */ ++#endif + uint64_t ms_start_delay; /* max ms to wait before starting probe */ + NDhcp4ClientProbeOption *options[UINT8_MAX + 1]; + int8_t request_parameters[UINT8_MAX + 1]; |