commit 1b39b28: [Fix] Fix registry leak in case of DNS errors
Vsevolod Stakhov
vsevolod at highsecure.ru
Mon Sep 30 11:49:07 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-09-30 12:45:39 +0100
URL: https://github.com/rspamd/rspamd/commit/1b39b28f6796c2a849af88a0cddb62210c9d7307 (HEAD -> master)
[Fix] Fix registry leak in case of DNS errors
---
src/libserver/dns.c | 2 ++
src/lua/lua_dns_resolver.c | 11 ++++++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/libserver/dns.c b/src/libserver/dns.c
index 08454c656..a6a109b1c 100644
--- a/src/libserver/dns.c
+++ b/src/libserver/dns.c
@@ -208,6 +208,8 @@ make_dns_request_task_common (struct rspamd_task *task,
if (!forced && task->dns_requests >= task->cfg->dns_max_requests) {
msg_info_task ("stop resolving on reaching %ud requests",
task->dns_requests);
+
+ return FALSE;
}
return TRUE;
diff --git a/src/lua/lua_dns_resolver.c b/src/lua/lua_dns_resolver.c
index 5478ab65a..9c57a2c7e 100644
--- a/src/lua/lua_dns_resolver.c
+++ b/src/lua/lua_dns_resolver.c
@@ -486,7 +486,11 @@ lua_dns_resolver_resolve_common (lua_State *L,
lua_pushboolean (L, TRUE);
}
else {
- lua_pushnil (L);
+ if (item) {
+ rspamd_symcache_item_async_dec_check (task, item, M);
+ }
+
+ goto err;
}
if (item) {
@@ -506,6 +510,11 @@ err:
g_free (cbdata->user_str);
}
+ /* Callback is not called in this case */
+ if (cbdata->cbref != -1) {
+ luaL_unref (L, LUA_REGISTRYINDEX, cbdata->cbref);
+ }
+
lua_pushnil (L);
return 1;
More information about the Commits
mailing list