summaryrefslogtreecommitdiffstats
path: root/package/hostapd/patches/700-random_pool_add_kernel.patch
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-04-12 17:30:16 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-04-12 17:30:16 +0000
commit9587f988b7e9f5b15eb3e561eeef81fedafde8eb (patch)
tree08b6302c205ea5ad5cf86b0cceb21e7e3a2f714c /package/hostapd/patches/700-random_pool_add_kernel.patch
parentbc3305d88ecd77f0812383a5e771824a014444b6 (diff)
hostapd: properly mark random data as ready if initialization succeeds without reassociation (#9222)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26611 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/hostapd/patches/700-random_pool_add_kernel.patch')
-rw-r--r--package/hostapd/patches/700-random_pool_add_kernel.patch36
1 files changed, 33 insertions, 3 deletions
diff --git a/package/hostapd/patches/700-random_pool_add_kernel.patch b/package/hostapd/patches/700-random_pool_add_kernel.patch
index 8ba40e5de..84e556b45 100644
--- a/package/hostapd/patches/700-random_pool_add_kernel.patch
+++ b/package/hostapd/patches/700-random_pool_add_kernel.patch
@@ -27,7 +27,7 @@
{
struct os_time t;
static unsigned int count = 0;
-@@ -191,9 +195,13 @@ int random_get_bytes(void *buf, size_t l
+@@ -191,16 +195,22 @@ int random_get_bytes(void *buf, size_t l
int random_pool_ready(void)
{
#ifdef __linux__
@@ -41,7 +41,37 @@
/*
* Make sure that there is reasonable entropy available before allowing
* some key derivation operations to proceed.
-@@ -258,9 +266,15 @@ int random_pool_ready(void)
+ */
+
+- if (dummy_key_avail == sizeof(dummy_key))
++ if (dummy_key_avail == sizeof(dummy_key)) {
++ random_mark_pool_ready();
+ return 1; /* Already initialized - good to continue */
++ }
+
+ /*
+ * Try to fetch some more data from the kernel high quality
+@@ -232,8 +242,10 @@ int random_pool_ready(void)
+ dummy_key_avail += res;
+ close(fd);
+
+- if (dummy_key_avail == sizeof(dummy_key))
++ if (dummy_key_avail == sizeof(dummy_key)) {
++ random_mark_pool_ready();
+ return 1;
++ }
+
+ wpa_printf(MSG_INFO, "random: Only %u/%u bytes of strong "
+ "random data available from /dev/random",
+@@ -243,6 +255,7 @@ int random_pool_ready(void)
+ total_collected + 10 * own_pool_ready > MIN_COLLECT_ENTROPY) {
+ wpa_printf(MSG_INFO, "random: Allow operation to proceed "
+ "based on internal entropy");
++ random_mark_pool_ready();
+ return 1;
+ }
+
+@@ -258,9 +271,15 @@ int random_pool_ready(void)
void random_mark_pool_ready(void)
{
@@ -57,7 +87,7 @@
}
-@@ -335,3 +349,22 @@ void random_deinit(void)
+@@ -335,3 +354,22 @@ void random_deinit(void)
random_close_fd();
#endif /* __linux__ */
}