Browse Source

Fix couple of memory leaks

tags/1.2.0
Vsevolod Stakhov 8 years ago
parent
commit
47c0129f1d
4 changed files with 12 additions and 8 deletions
  1. 4
    5
      src/fuzzy_storage.c
  2. 4
    2
      src/libcryptobox/keypair.c
  3. 2
    0
      src/libserver/roll_history.c
  4. 2
    1
      src/libserver/symbols_cache.c

+ 4
- 5
src/fuzzy_storage.c View File

@@ -154,6 +154,7 @@ struct fuzzy_peer_request {

struct fuzzy_key {
struct rspamd_cryptobox_keypair *key;
struct rspamd_cryptobox_pubkey *pk;
struct fuzzy_key_stat *stat;
};

@@ -601,7 +602,7 @@ rspamd_fuzzy_decrypt_command (struct fuzzy_session *s)
if (!rspamd_cryptobox_decrypt_nm_inplace (payload, payload_len, hdr->nonce,
rspamd_pubkey_get_nm (rk),
hdr->mac, RSPAMD_CRYPTOBOX_MODE_25519)) {
msg_debug ("decryption failed");
msg_err ("decryption failed");
rspamd_pubkey_unref (rk);

return FALSE;
@@ -1122,7 +1123,7 @@ fuzzy_parse_keypair (rspamd_mempool_t *pool,
NULL);
g_hash_table_insert (ctx->keys, (gpointer)pk, key);
ctx->default_key = key;
msg_info_pool ("loaded keypair %8xs", pk);
msg_info_pool ("loaded keypair %*xs", 8, pk);
}
else if (ucl_object_type (obj) == UCL_ARRAY) {
while ((cur = ucl_iterate_object (obj, &it, true)) != NULL) {
@@ -1138,9 +1139,7 @@ fuzzy_parse_keypair (rspamd_mempool_t *pool,
static guint
fuzzy_kp_hash (gconstpointer p)
{
const guchar *pk = p;

return XXH64 (pk, RSPAMD_FUZZY_KEYLEN, 0xdeadbabe);
return *(guint *)p;
}

static gboolean

+ 4
- 2
src/libcryptobox/keypair.c View File

@@ -342,6 +342,7 @@ rspamd_pubkey_from_base32 (const gchar *b32,
}

pk = rspamd_cryptobox_pubkey_alloc (type, alg);
REF_INIT_RETAIN (pk, rspamd_cryptobox_pubkey_dtor);
pk->alg = alg;
pk->type = type;
pk_data = rspamd_cryptobox_pubkey_pk (pk, &pklen);
@@ -388,6 +389,7 @@ rspamd_pubkey_from_hex (const gchar *hex,
}

pk = rspamd_cryptobox_pubkey_alloc (type, alg);
REF_INIT_RETAIN (pk, rspamd_cryptobox_pubkey_dtor);
pk->alg = alg;
pk->type = type;
pk_data = rspamd_cryptobox_pubkey_pk (pk, &pklen);
@@ -420,6 +422,7 @@ rspamd_pubkey_from_bin (const guchar *raw,
}

pk = rspamd_cryptobox_pubkey_alloc (type, alg);
REF_INIT_RETAIN (pk, rspamd_cryptobox_pubkey_dtor);
pk->alg = alg;
pk->type = type;
pk_data = rspamd_cryptobox_pubkey_pk (pk, &pklen);
@@ -698,6 +701,7 @@ rspamd_keypair_from_ucl (const ucl_object_t *obj)
kp = rspamd_cryptobox_keypair_alloc (type, mode);
kp->type = type;
kp->alg = mode;
REF_INIT_RETAIN (kp, rspamd_cryptobox_keypair_dtor);
g_assert (kp != NULL);

target = rspamd_cryptobox_keypair_sk (kp, &len);
@@ -734,8 +738,6 @@ rspamd_keypair_from_ucl (const ucl_object_t *obj)

rspamd_cryptobox_hash (kp->id, target, len, NULL, 0);

REF_INIT_RETAIN (kp, rspamd_cryptobox_keypair_dtor);

return kp;
}


+ 2
- 0
src/libserver/roll_history.c View File

@@ -307,6 +307,8 @@ rspamd_roll_history_load (struct roll_history *history, const gchar *filename)
}
}

ucl_object_unref (top);

history->cur_row = n;

return TRUE;

+ 2
- 1
src/libserver/symbols_cache.c View File

@@ -502,6 +502,7 @@ rspamd_symbols_cache_save_items (struct symbols_cache *cache, const gchar *name)
efunc = ucl_object_emit_file_funcs (f);
ret = ucl_object_emit_full (top, UCL_EMIT_JSON_COMPACT, efunc);
ucl_object_emit_funcs_free (efunc);
ucl_object_unref (top);
fclose (f);

return ret;
@@ -765,7 +766,7 @@ rspamd_symbols_cache_validate_cb (gpointer k, gpointer v, gpointer ud)
g_hash_table_insert (m->symbols, item->symbol, s);
mlist = g_hash_table_lookup (cache->cfg->metrics_symbols,
item->symbol);
mlist = g_list_prepend (mlist, m);
mlist = g_list_append (mlist, m);
g_hash_table_insert (cache->cfg->metrics_symbols,
item->symbol, mlist);


Loading…
Cancel
Save