diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-03-28 14:10:13 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-03-28 14:10:31 +0100 |
commit | 7ab6c1b73821caf33d8931206a7fb01cab09b45d (patch) | |
tree | 49f33f90df704e2ea1c0f2c18aee285f297f3bf1 /src/libserver/url.c | |
parent | a59b46070c98124f185307b983c775b67c8f54fd (diff) | |
download | rspamd-7ab6c1b73821caf33d8931206a7fb01cab09b45d.tar.gz rspamd-7ab6c1b73821caf33d8931206a7fb01cab09b45d.zip |
[Fix] Further fixes to avoid PHISHING FP
Diffstat (limited to 'src/libserver/url.c')
-rw-r--r-- | src/libserver/url.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/src/libserver/url.c b/src/libserver/url.c index 347550ba6..0a1b26bb3 100644 --- a/src/libserver/url.c +++ b/src/libserver/url.c @@ -2178,11 +2178,8 @@ rspamd_url_trie_callback (struct rspamd_multipattern *mp, } gboolean -rspamd_url_find (rspamd_mempool_t *pool, - const gchar *begin, - gsize len, - gchar **url_str, - gboolean is_html) +rspamd_url_find (rspamd_mempool_t *pool, const gchar *begin, gsize len, + gchar **url_str, gboolean is_html, goffset *url_pos) { struct url_callback_data cb; gint ret; @@ -2201,6 +2198,10 @@ rspamd_url_find (rspamd_mempool_t *pool, *url_str = cb.url_str; } + if (url_pos) { + *url_pos = cb.start - begin; + } + return TRUE; } @@ -2380,11 +2381,8 @@ rspamd_url_text_part_callback (struct rspamd_url *url, gsize start_offset, /* We also search the query for additional url inside */ if (url->querylen > 0) { - if (rspamd_url_find (task->task_pool, - url->query, - url->querylen, - &url_str, - IS_PART_HTML (cbd->part))) { + if (rspamd_url_find (task->task_pool, url->query, url->querylen, + &url_str, IS_PART_HTML (cbd->part), NULL)) { query_url = rspamd_mempool_alloc0 (task->task_pool, sizeof (struct rspamd_url)); @@ -2515,11 +2513,8 @@ rspamd_url_task_callback (struct rspamd_url *url, gsize start_offset, /* We also search the query for additional url inside */ if (url->querylen > 0) { - if (rspamd_url_find (task->task_pool, - url->query, - url->querylen, - &url_str, - FALSE)) { + if (rspamd_url_find (task->task_pool, url->query, url->querylen, + &url_str, FALSE, NULL)) { query_url = rspamd_mempool_alloc0 (task->task_pool, sizeof (struct rspamd_url)); |