commit 50e5303: [Minor] Fix default policy application

Vsevolod Stakhov vsevolod at highsecure.ru
Tue Dec 17 15:14:07 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-12-17 13:49:30 +0000
URL: https://github.com/rspamd/rspamd/commit/50e53039c4259a66124ec2bf481da8fc85d551b7

[Minor] Fix default policy application

---
 src/lua/lua_spf.c | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

diff --git a/src/lua/lua_spf.c b/src/lua/lua_spf.c
index 743d523e5..9cb6261f8 100644
--- a/src/lua/lua_spf.c
+++ b/src/lua/lua_spf.c
@@ -429,11 +429,19 @@ lua_spf_record_check_ip (lua_State *L)
 		for (guint i = 0; i < record->elts->len; i ++) {
 			struct spf_addr *addr = &g_array_index (record->elts, struct spf_addr, i);
 			if ((nres = spf_check_element (L, record, addr, ip)) > 0) {
+				if (need_free_ip) {
+					g_free (ip);
+				}
+
 				return nres;
 			}
 		}
 	}
 	else {
+		if (need_free_ip) {
+			g_free (ip);
+		}
+
 		return luaL_error (L, "invalid arguments");
 	}
 
@@ -441,9 +449,20 @@ lua_spf_record_check_ip (lua_State *L)
 		g_free (ip);
 	}
 
-	lua_pushboolean (L, false);
-	lua_pushinteger (L, RSPAMD_SPF_RESOLVED_NA);
-	lua_pushstring (L, "no result");
+	/* If we are here it means that there is no ALL record */
+	/*
+	 * According to https://tools.ietf.org/html/rfc7208#section-4.7 it means
+	 * SPF neutral
+	 */
+	struct spf_addr fake_all;
+
+	fake_all.mech = SPF_NEUTRAL;
+	fake_all.flags = RSPAMD_SPF_FLAG_ANY;
+	fake_all.spf_string = "all";
+
+	lua_pushboolean (L, true);
+	lua_pushinteger (L, SPF_NEUTRAL);
+	lua_spf_push_spf_addr (L, &fake_all);
 
 	return 3;
 }


More information about the Commits mailing list