From: Vsevolod Stakhov Date: Sat, 28 Nov 2015 22:22:21 +0000 (+0000) Subject: Add missing components normalization X-Git-Tag: 1.1.0~450 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9a7f6f24d0cb6e5713360c09b801576f74bf04c5;p=rspamd.git Add missing components normalization --- diff --git a/src/libserver/url.c b/src/libserver/url.c index a7275c337..29082d338 100644 --- a/src/libserver/url.c +++ b/src/libserver/url.c @@ -1166,20 +1166,24 @@ rspamd_url_is_ip (struct rspamd_url *uri, rspamd_mempool_t *pool) */ switch (i) { case 4: - n |= GUINT32_TO_BE (t) << shift; + t = GUINT32_TO_BE (t); break; case 3: - n |= (GUINT32_TO_BE (t & 0xFFFFFFU) >> 8) << shift; + t = (GUINT32_TO_BE (t & 0xFFFFFFU) >> 8); break; case 2: - n |= GUINT16_TO_BE (t & 0xFFFFU) << shift; + t = GUINT16_TO_BE (t & 0xFFFFU); break; default: - n |= (t & 0xFF) << shift; + t = t & 0xFF; break; } - shift = nshift; + if (p != end) { + n |= t << shift; + + shift = nshift; + } } else { check_num = FALSE; @@ -1189,6 +1193,14 @@ rspamd_url_is_ip (struct rspamd_url *uri, rspamd_mempool_t *pool) p++; } + /* The last component should be last according to url normalization: + * 192.168.1 -> 192.168.0.1 + * 192 -> 0.0.0.192 + * 192.168 -> 192.0.0.168 + */ + shift = 8 * (4 - i); + n |= t << shift; + if (check_num && dots <= 4) { memcpy (&in4, &n, sizeof (in4)); uri->host = rspamd_mempool_alloc (pool, INET_ADDRSTRLEN + 1);