commit a0b6284: [Minor] RDNS: Filter starting and trailing dots in DNS names

Vsevolod Stakhov vsevolod at highsecure.ru
Tue Jan 22 16:56:03 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-01-22 16:54:34 +0000
URL: https://github.com/rspamd/rspamd/commit/a0b6284734f906f188c05c925b9e2077172f337e (HEAD -> master)

[Minor] RDNS: Filter starting and trailing dots in DNS names

---
 contrib/librdns/resolver.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/contrib/librdns/resolver.c b/contrib/librdns/resolver.c
index b38e90514..522ec0d9c 100644
--- a/contrib/librdns/resolver.c
+++ b/contrib/librdns/resolver.c
@@ -605,6 +605,33 @@ rdns_make_request_full (
 				return NULL;
 			}
 
+			if (cur_name[0] == '.') {
+				/* Skip dots at the begin */
+				unsigned int ndots = strspn (cur_name, ".");
+
+				cur_name += ndots;
+				clen -= ndots;
+
+				if (clen == 0) {
+					rdns_warn ("got empty name to resolve");
+					rdns_request_free (req);
+					return NULL;
+				}
+			}
+
+			if (cur_name[clen - 1] == '.') {
+				/* Skip trailing dots */
+				while (clen >= 1 && cur_name[clen - 1] == '.') {
+					clen --;
+				}
+
+				if (clen == 0) {
+					rdns_warn ("got empty name to resolve");
+					rdns_request_free (req);
+					return NULL;
+				}
+			}
+
 			if (last_name == NULL && queries == 1 && clen < MAX_FAKE_NAME) {
 				/* We allocate structure in the static space */
 				idx = (struct rdns_fake_reply_idx *)align_ptr (fake_buf, 16);


More information about the Commits mailing list