diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libserver/html.c | 4 | ||||
-rw-r--r-- | src/libserver/url.h | 1 | ||||
-rw-r--r-- | src/lua/lua_url.c | 2 |
3 files changed, 7 insertions, 0 deletions
diff --git a/src/libserver/html.c b/src/libserver/html.c index e97a010fe..afaeae4c5 100644 --- a/src/libserver/html.c +++ b/src/libserver/html.c @@ -1351,6 +1351,10 @@ rspamd_html_process_url (rspamd_mempool_t *pool, const gchar *start, guint len, if (norm_res & (RSPAMD_UNICODE_NORM_ZERO_SPACES|RSPAMD_UNICODE_NORM_ERROR)) { saved_flags |= RSPAMD_URL_FLAG_OBSCURED; + + if (norm_res & RSPAMD_UNICODE_NORM_ZERO_SPACES) { + saved_flags |= RSPAMD_URL_FLAG_ZW_SPACES; + } } rc = rspamd_url_parse (url, decoded, dlen, pool, RSPAMD_URL_PARSE_HREF); diff --git a/src/libserver/url.h b/src/libserver/url.h index a9eda71de..12a649ec7 100644 --- a/src/libserver/url.h +++ b/src/libserver/url.h @@ -27,6 +27,7 @@ enum rspamd_url_flags { RSPAMD_URL_FLAG_HAS_USER = 1 << 14, RSPAMD_URL_FLAG_SCHEMALESS = 1 << 15, RSPAMD_URL_FLAG_UNNORMALISED = 1 << 16, + RSPAMD_URL_FLAG_ZW_SPACES = 1 << 17, }; struct rspamd_url_tag { diff --git a/src/lua/lua_url.c b/src/lua/lua_url.c index 8b18c7c3d..8bc0cf657 100644 --- a/src/lua/lua_url.c +++ b/src/lua/lua_url.c @@ -875,6 +875,7 @@ lua_url_all (lua_State *L) * - `has_user`: URL has user part * - `schemaless`: URL has no schema * - `unnormalised`: URL has some unicode unnormalities + * - `zw_spaces`: URL has some zero width spaces * @return {table} URL flags */ #define PUSH_FLAG(fl, name) do { \ @@ -914,6 +915,7 @@ lua_url_get_flags (lua_State *L) PUSH_FLAG (RSPAMD_URL_FLAG_HAS_USER, "has_user"); PUSH_FLAG (RSPAMD_URL_FLAG_SCHEMALESS, "schemaless"); PUSH_FLAG (RSPAMD_URL_FLAG_UNNORMALISED, "unnormalised"); + PUSH_FLAG (RSPAMD_URL_FLAG_ZW_SPACES, "zw_spaces"); } else { return luaL_error (L, "invalid arguments"); |