commit 89252bc: [Fix] Fix crash with cname replies
Vsevolod Stakhov
vsevolod at rspamd.com
Sun Sep 25 12:07:03 UTC 2022
Author: Vsevolod Stakhov
Date: 2022-09-25 13:02:22 +0100
URL: https://github.com/rspamd/rspamd/commit/89252bcf03a2213a72f348e210240bb96848e5aa
[Fix] Fix crash with cname replies
---
src/lua/lua_http.c | 41 +++++++++++++++++++++++++++--------------
1 file changed, 27 insertions(+), 14 deletions(-)
diff --git a/src/lua/lua_http.c b/src/lua/lua_http.c
index a53145c7c..4e8d98abb 100644
--- a/src/lua/lua_http.c
+++ b/src/lua/lua_http.c
@@ -20,6 +20,7 @@
#include "ref.h"
#include "unix-std.h"
#include "zlib.h"
+#include "utlist.h"
/***
* @module rspamd_http
@@ -511,28 +512,40 @@ lua_http_dns_handler (struct rdns_reply *reply, gpointer ud)
REF_RELEASE (cbd);
}
else {
- if (reply->entries->type == RDNS_REQUEST_A) {
- cbd->addr = rspamd_inet_address_new (AF_INET,
- &reply->entries->content.a.addr);
+ struct rdns_reply_entry *entry;
+
+ DL_FOREACH(reply->entries, entry) {
+ if (entry->type == RDNS_REQUEST_A) {
+ cbd->addr = rspamd_inet_address_new(AF_INET,
+ &entry->content.a.addr);
+ break;
+ }
+ else if (entry->type == RDNS_REQUEST_AAAA) {
+ cbd->addr = rspamd_inet_address_new(AF_INET6,
+ &entry->content.aaa.addr);
+ break;
+ }
}
- else if (reply->entries->type == RDNS_REQUEST_AAAA) {
- cbd->addr = rspamd_inet_address_new (AF_INET6,
- &reply->entries->content.aaa.addr);
+
+ if (cbd->addr == NULL) {
+ lua_http_push_error (cbd, "unable to resolve host: no records with such name");
+ REF_RELEASE (cbd);
}
+ else {
+ REF_RETAIN (cbd);
+ if (!lua_http_make_connection(cbd)) {
+ lua_http_push_error(cbd, "unable to make connection to the host");
- REF_RETAIN (cbd);
- if (!lua_http_make_connection (cbd)) {
- lua_http_push_error (cbd, "unable to make connection to the host");
+ if (cbd->ref.refcount > 1) {
+ REF_RELEASE (cbd);
+ }
- if (cbd->ref.refcount > 1) {
REF_RELEASE (cbd);
- }
+ return;
+ }
REF_RELEASE (cbd);
-
- return;
}
- REF_RELEASE (cbd);
}
if (item) {
More information about the Commits
mailing list