# HG changeset patch # User Carl Byington # Date 1482281672 28800 # Node ID 354b15b8b26392de0cfdce523b592f2a8d0a21a4 # Parent a4f2fda7242213d279b2d68ed6418fd4626293bc header from may appear very early in unsigned messages diff -r a4f2fda72422 -r 354b15b8b263 dnsbl.spec.in --- a/dnsbl.spec.in Tue Dec 20 09:20:15 2016 -0800 +++ b/dnsbl.spec.in Tue Dec 20 16:54:32 2016 -0800 @@ -103,7 +103,7 @@ %changelog -* Sat Dec 17 2016 Carl Byington - 6.48-1 +* Tue Dec 20 2016 Carl Byington - 6.48-1 - allow dkim whitelisting. * Wed Sep 21 2016 Carl Byington - 6.47-1 diff -r a4f2fda72422 -r 354b15b8b263 src/dnsbl.cpp --- a/src/dnsbl.cpp Tue Dec 20 09:20:15 2016 -0800 +++ b/src/dnsbl.cpp Tue Dec 20 16:54:32 2016 -0800 @@ -1463,15 +1463,6 @@ { mlfiPriv &priv = *MLFIPRIV; priv.header_count++; - char msg[maxlen]; - if ((priv.header_count < 4) || (strcasecmp(headerf, "from") == 0)) { - snprintf(msg, sizeof(msg), "header %s: %s", headerf, headerv); - for (size_t i=0; i 2) && (!priv.fromaddr) && (strcasecmp(headerf, "from") == 0)) { + if ((!priv.fromaddr) && (strcasecmp(headerf, "from") == 0)) { const int nmatch = 2; regmatch_t match[nmatch]; - int err = regexec(&from_pattern, msg, nmatch, match, 0); + int err = regexec(&from_pattern, headerv, nmatch, match, 0); if (err == 0) { int s1 = match[1].rm_so; // domain int e1 = match[1].rm_eo; if (s1 != -1) { - msg[e1] = '\0'; - priv.fromaddr = strdup(msg+s1); + char save = headerv[e1]; + headerv[e1] = '\0'; + priv.fromaddr = strdup(headerv+s1); + headerv[e1] = save; } } }