commit 5bae837: [Minor] Try to fix refcounts related crash

Vsevolod Stakhov vsevolod at rspamd.com
Mon Sep 19 12:49:05 UTC 2022


Author: Vsevolod Stakhov
Date: 2022-09-19 13:46:11 +0100
URL: https://github.com/rspamd/rspamd/commit/5bae837e5fb282e055a9d80d9d6aaf7eaed9a2d5

[Minor] Try to fix refcounts related crash

---
 src/lua/lua_tcp.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/lua/lua_tcp.c b/src/lua/lua_tcp.c
index 6391e4e11..78085ecc6 100644
--- a/src/lua/lua_tcp.c
+++ b/src/lua/lua_tcp.c
@@ -599,7 +599,6 @@ lua_tcp_push_error (struct lua_tcp_cbdata *cbd, gboolean is_fatal,
 			}
 
 			lua_settop (L, top);
-
 			TCP_RELEASE (cbd);
 
 			callback_called = TRUE;
@@ -624,7 +623,6 @@ lua_tcp_push_error (struct lua_tcp_cbdata *cbd, gboolean is_fatal,
 	}
 
 	va_end (ap);
-
 	lua_thread_pool_restore_callback (&cbs);
 }
 
@@ -1368,6 +1366,7 @@ lua_tcp_dns_handler (struct rdns_reply *reply, gpointer ud)
 	const struct rdns_request_name *rn;
 
 	if (reply->code != RDNS_RC_NOERROR) {
+		TCP_RETAIN (cbd);
 		rn = rdns_request_get_name (reply->request, NULL);
 		lua_tcp_push_error (cbd, TRUE, "unable to resolve host: %s",
 				rn->name);
@@ -1392,6 +1391,7 @@ lua_tcp_dns_handler (struct rdns_reply *reply, gpointer ud)
 		rspamd_inet_address_set_port (cbd->addr, cbd->port);
 
 		if (!lua_tcp_make_connection (cbd)) {
+			TCP_RETAIN (cbd);
 			lua_tcp_push_error (cbd, TRUE, "unable to make connection to the host %s",
 					rspamd_inet_address_to_string (cbd->addr));
 			TCP_RELEASE (cbd);
@@ -2069,6 +2069,7 @@ lua_tcp_connect_sync (lua_State *L)
 
 			if (!rspamd_dns_resolver_request_task (task, lua_tcp_dns_handler, cbd,
 					RDNS_REQUEST_A, host)) {
+				cbd->item = NULL; /* We have not registered watcher */
 				lua_pushboolean (L, FALSE);
 				lua_pushliteral (L, "Failed to initiate dns request");
 				TCP_RELEASE (cbd);


More information about the Commits mailing list