]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Fix dkim private keys operations
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 7 Jul 2016 12:03:13 +0000 (13:03 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 7 Jul 2016 12:03:29 +0000 (13:03 +0100)
src/libserver/dkim.c
src/plugins/dkim_check.c

index 136c24d0b3454505650a813f25016704fc76b074..cdad6365c1d76d9c3171134ddfc4d268aa5b33b1 100644 (file)
@@ -2036,6 +2036,10 @@ rspamd_dkim_sign_key_load (const gchar *path, GError **err)
        }
 
        nkey = g_slice_alloc0 (sizeof (*nkey));
+#ifdef MADV_ZERO_WIRED_PAGES
+       madvise (map, len, MADV_ZERO_WIRED_PAGES);
+#endif
+       (void)mlock (map, len);
        nkey->keydata = map;
        nkey->keylen = len;
 
index 1c0ccad6867305f17f420b7cf67a4c32fc44f0b3..b405afed00ceb631bbbe77fedf6f03d3684abe5a 100644 (file)
@@ -764,7 +764,7 @@ dkim_sign_callback (struct rspamd_task *task, void *unused)
                                        }
 
                                        rspamd_lru_hash_insert (dkim_module_ctx->dkim_sign_hash,
-                                                       g_strdup (key), rspamd_dkim_sign_key_ref (dkim_key),
+                                                       g_strdup (key), dkim_key,
                                                        time (NULL), 0);
                                }
 
@@ -775,7 +775,6 @@ dkim_sign_callback (struct rspamd_task *task, void *unused)
                                if (ctx == NULL) {
                                        msg_err_task ("cannot create sign context: %e",
                                                        key, err);
-                                       rspamd_dkim_sign_key_unref (dkim_key);
                                        g_error_free (err);
 
                                        return;