From 1e0caa55d3f1910973694d6481a13c689212a1cd Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 7 Feb 2019 17:21:03 +0000 Subject: [PATCH] [Minor] Another try to fix 'IPv6:' prefix --- src/libutil/addr.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/libutil/addr.c b/src/libutil/addr.c index 022a94559..fd4621aef 100644 --- a/src/libutil/addr.c +++ b/src/libutil/addr.c @@ -528,6 +528,13 @@ rspamd_parse_inet_address_ip6 (const guchar *text, gsize len, gpointer target) len = percent - p; /* Ignore scope */ } + if (len > sizeof ("IPv6:") - 1 && + g_ascii_strncasecmp (p, "IPv6:", sizeof ("IPv6:") - 1) == 0) { + /* Special case, SMTP conformant IPv6 address */ + p += sizeof ("IPv6:") - 1; + len -= sizeof ("IPv6:") - 1; + } + for (/* void */; len; len--) { t = *p++; @@ -735,16 +742,7 @@ rspamd_parse_inet_address_common (rspamd_inet_addr_t **target, return FALSE; } - if (iplen > sizeof ("IPv6:") - 1 && - g_ascii_strncasecmp (src + 1, "IPv6:", sizeof ("IPv6:") - 1) == 0) { - /* Special case, SMTP conformant IPv6 address */ - ip_start = src + 1 + sizeof ("IPv6:") - 1; - iplen -= sizeof ("IPv6:") - 1; - } - else { - ip_start = src + 1; - } - + ip_start = src + 1; rspamd_strlcpy (ipbuf, ip_start, iplen + 1); if (rspamd_parse_inet_address_ip6 (ipbuf, iplen, -- 2.39.5