diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-07-08 17:41:31 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2019-07-08 17:41:31 +0100 |
commit | 9026da71bb262886a275a3e24b1db51ab3395240 (patch) | |
tree | 6050f1a73472b3251b9fd18db7e8c96a7cca276c /src/libutil/multipattern.c | |
parent | c271eb36656a4ff88a9c8c1d59934949260275a3 (diff) | |
download | rspamd-9026da71bb262886a275a3e24b1db51ab3395240.tar.gz rspamd-9026da71bb262886a275a3e24b1db51ab3395240.zip |
[Rework] Use libsodium instead of hand crafted crypto implementations
Diffstat (limited to 'src/libutil/multipattern.c')
-rw-r--r-- | src/libutil/multipattern.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/libutil/multipattern.c b/src/libutil/multipattern.c index 5f5724a0c..d353c08e1 100644 --- a/src/libutil/multipattern.c +++ b/src/libutil/multipattern.c @@ -25,6 +25,7 @@ #include "hs.h" #endif #include "acism.h" +#include <stdalign.h> #define MAX_SCRATCH 4 @@ -38,14 +39,14 @@ static const char *hs_cache_dir = NULL; static enum rspamd_hs_check_state hs_suitable_cpu = RSPAMD_HS_UNCHECKED; -struct rspamd_multipattern { +struct RSPAMD_ALIGNED(64) rspamd_multipattern { #ifdef WITH_HYPERSCAN + rspamd_cryptobox_hash_state_t hash_state; hs_database_t *db; hs_scratch_t *scratch[MAX_SCRATCH]; GArray *hs_pats; GArray *hs_ids; GArray *hs_flags; - rspamd_cryptobox_hash_state_t hash_state; guint scratch_used; #endif ac_trie_t *t; @@ -240,7 +241,11 @@ rspamd_multipattern_create (enum rspamd_multipattern_flags flags) { struct rspamd_multipattern *mp; - mp = g_malloc0 (sizeof (*mp)); + /* Align due to blake2b state */ + posix_memalign((void **)&mp, alignof (struct rspamd_multipattern), + sizeof (*mp)); + g_assert (mp != NULL); + memset (mp, 0, sizeof (*mp)); mp->flags = flags; #ifdef WITH_HYPERSCAN @@ -265,7 +270,10 @@ rspamd_multipattern_create_sized (guint npatterns, { struct rspamd_multipattern *mp; - mp = g_malloc0 (sizeof (*mp)); + /* Align due to blake2b state */ + posix_memalign((void **)&mp, alignof (struct rspamd_multipattern), sizeof (*mp)); + g_assert (mp != NULL); + memset (mp, 0, sizeof (*mp)); mp->flags = flags; #ifdef WITH_HYPERSCAN @@ -646,7 +654,7 @@ rspamd_multipattern_destroy (struct rspamd_multipattern *mp) g_array_free (mp->hs_pats, TRUE); g_array_free (mp->hs_ids, TRUE); g_array_free (mp->hs_flags, TRUE); - g_free (mp); + free (mp); /* Due to posix_memalign */ return; } |