diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-01-15 11:21:56 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-01-15 11:21:56 +0000 |
commit | 092fa9c14831bc0460bd25190fa013697f572354 (patch) | |
tree | abaff464b106edbc5c694f0e389f241a38bc06c7 | |
parent | 5d6f92884a1264d4080b00994090508189e2ead8 (diff) | |
download | rspamd-092fa9c14831bc0460bd25190fa013697f572354.tar.gz rspamd-092fa9c14831bc0460bd25190fa013697f572354.zip |
[Fix] Fix urls shifting when doing decode to include separators
-rw-r--r-- | src/libserver/url.c | 6 | ||||
-rw-r--r-- | test/lua/unit/url.lua | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/libserver/url.c b/src/libserver/url.c index d792177e8..866cb4c22 100644 --- a/src/libserver/url.c +++ b/src/libserver/url.c @@ -1810,7 +1810,7 @@ rspamd_url_shift (struct rspamd_url *uri, gsize nlen, old_shift = uri->hostlen; uri->hostlen -= shift; memmove (uri->host + uri->hostlen, uri->host + old_shift, - uri->datalen + uri->querylen + uri->fragmentlen); + uri->datalen + uri->querylen + uri->fragmentlen + 1); uri->urllen -= shift; uri->flags |= RSPAMD_URL_FLAG_HOSTENCODED; break; @@ -1825,7 +1825,7 @@ rspamd_url_shift (struct rspamd_url *uri, gsize nlen, old_shift = uri->datalen; uri->datalen -= shift; memmove (uri->data + uri->datalen, uri->data + old_shift, - uri->querylen + uri->fragmentlen); + uri->querylen + uri->fragmentlen + 1); uri->urllen -= shift; uri->flags |= RSPAMD_URL_FLAG_PATHENCODED; break; @@ -1840,7 +1840,7 @@ rspamd_url_shift (struct rspamd_url *uri, gsize nlen, old_shift = uri->querylen; uri->querylen -= shift; memmove (uri->query + uri->querylen, uri->query + old_shift, - uri->fragmentlen); + uri->fragmentlen + 1); uri->urllen -= shift; uri->flags |= RSPAMD_URL_FLAG_QUERYENCODED; break; diff --git a/test/lua/unit/url.lua b/test/lua/unit/url.lua index e4baf5b6d..7f337c8b2 100644 --- a/test/lua/unit/url.lua +++ b/test/lua/unit/url.lua @@ -57,7 +57,7 @@ context("URL check functions", function() cases = { {'http://example.net/?arg=%23#fragment', true, { - host = 'example.net', fragment = 'fragment' + host = 'example.net', fragment = 'fragment', query = 'arg=#', }}, {"http:/\\[::eeee:192.168.0.1]/#test", true, { host = '::eeee:c0a8:1', fragment = 'test' |