diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2022-03-18 21:33:31 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2022-03-18 21:33:59 +0000 |
commit | b083a2a17f190d7e15ba0a80aa811746f974a8ed (patch) | |
tree | 968150bb99a2bc6dcc523bd1e069219195b296b4 /src | |
parent | f57cb6099e5f9f4dfc5208c36b9130c9837410e6 (diff) | |
download | rspamd-b083a2a17f190d7e15ba0a80aa811746f974a8ed.tar.gz rspamd-b083a2a17f190d7e15ba0a80aa811746f974a8ed.zip |
[Minor] Adopt lua_url stuff for the new PRG
Diffstat (limited to 'src')
-rw-r--r-- | src/lua/lua_url.c | 12 | ||||
-rw-r--r-- | src/lua/lua_url.h | 4 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/lua/lua_url.c b/src/lua/lua_url.c index af7dd5f4e..a2ce1d987 100644 --- a/src/lua/lua_url.c +++ b/src/lua/lua_url.c @@ -963,7 +963,7 @@ lua_tree_url_callback (gpointer key, gpointer value, gpointer ud) } if (cb->skip_prob > 0) { - gdouble coin = rspamd_random_double_fast_seed (cb->xoroshiro_state); + gdouble coin = rspamd_random_double_fast_seed (&cb->random_seed); if (coin < cb->skip_prob) { return; @@ -1337,7 +1337,7 @@ lua_url_cbdata_dtor (struct lua_tree_cb_data *cbd) } gsize -lua_url_adjust_skip_prob (gdouble timestamp, +lua_url_adjust_skip_prob (float timestamp, guchar digest[16], struct lua_tree_cb_data *cb, gsize sz) @@ -1347,11 +1347,11 @@ lua_url_adjust_skip_prob (gdouble timestamp, /* * Use task dependent probabilistic seed to ensure that * consequent task:get_urls return the same list of urls + * We use both digest and timestamp here to avoid attack surface + * based just on digest. */ - memset (cb->xoroshiro_state, 0, sizeof (cb->xoroshiro_state)); - memcpy (&cb->xoroshiro_state[0], ×tamp, - MIN (sizeof (cb->xoroshiro_state[0]), sizeof (timestamp))); - memcpy (&cb->xoroshiro_state[1], digest, 16); + memcpy(&cb->random_seed, digest, 4); + memcpy(((unsigned char *)&cb->random_seed) + 4, ×tamp, 4); sz = cb->max_urls; } diff --git a/src/lua/lua_url.h b/src/lua/lua_url.h index 904a56da7..ac6adec50 100644 --- a/src/lua/lua_url.h +++ b/src/lua/lua_url.h @@ -37,7 +37,7 @@ struct lua_tree_cb_data { gboolean sort; gsize max_urls; gdouble skip_prob; - guint64 xoroshiro_state[4]; + guint64 random_seed; }; void lua_tree_url_callback (gpointer key, gpointer value, gpointer ud); @@ -75,7 +75,7 @@ void lua_url_cbdata_dtor (struct lua_tree_cb_data *cbd); * @param max_urls * @return */ -gsize lua_url_adjust_skip_prob (gdouble timestamp, +gsize lua_url_adjust_skip_prob (float timestamp, guchar *digest, struct lua_tree_cb_data *cb, gsize sz); |