summaryrefslogtreecommitdiffstats
path: root/src/libserver/url.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-03-28 14:10:13 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2017-03-28 14:10:31 +0100
commit7ab6c1b73821caf33d8931206a7fb01cab09b45d (patch)
tree49f33f90df704e2ea1c0f2c18aee285f297f3bf1 /src/libserver/url.c
parenta59b46070c98124f185307b983c775b67c8f54fd (diff)
downloadrspamd-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.c25
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));