X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Frouters%2Frf_get_munge_headers.c;h=5c95d2d1c957026f9f8ba93b501bb919062f909b;hb=a5dc727afcc92deab722a84ae5cf3d00ae74c5f6;hp=d4af84f6d0fcc15281236f09a0ab967b4d5d51a8;hpb=6023a6ad2ac0294879b14127f62795095da573b5;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/routers/rf_get_munge_headers.c b/src/src/routers/rf_get_munge_headers.c index d4af84f6d..5c95d2d1c 100644 --- a/src/src/routers/rf_get_munge_headers.c +++ b/src/src/routers/rf_get_munge_headers.c @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2014 */ +/* Copyright (c) University of Cambridge 1995 - 2018 */ /* See the file NOTICE for conditions of use and distribution. */ #include "../exim.h" @@ -44,10 +44,11 @@ if (rblock->extra_headers) while ((s = string_nextinlist(&list, &sep, NULL, 0))) if (!(s = expand_string(s))) { - if (!expand_string_forcedfail) + if (!f.expand_string_forcedfail) { - addr->message = string_sprintf("%s router failed to expand \"%s\": %s", - rblock->name, rblock->extra_headers, expand_string_message); + addr->message = string_sprintf( + "%s router failed to expand add_headers item \"%s\": %s", + rblock->name, s, expand_string_message); return DEFER; } } @@ -58,7 +59,7 @@ if (rblock->extra_headers) shared with other addresses. The output function outputs them in reverse order. */ - header_line * h = store_get(sizeof(header_line)); + header_line * h = store_get(sizeof(header_line), FALSE); /* We used to use string_sprintf() to add the newline if needed, but that causes problems if the header line is exceedingly long (e.g. adding @@ -68,7 +69,7 @@ if (rblock->extra_headers) h->text = s; else { - h->text = store_get(slen+2); + h->text = store_get(slen+2, is_tainted(s)); memcpy(h->text, s, slen); h->text[slen++] = '\n'; h->text[slen] = 0; @@ -90,22 +91,32 @@ if (rblock->remove_headers) const uschar * list = rblock->remove_headers; int sep = ':'; uschar * s; + gstring * g = NULL; + + if (*remove_headers) + g = string_cat(NULL, *remove_headers); while ((s = string_nextinlist(&list, &sep, NULL, 0))) if (!(s = expand_string(s))) { - if (!expand_string_forcedfail) + if (!f.expand_string_forcedfail) { - addr->message = string_sprintf("%s router failed to expand \"%s\": %s", - rblock->name, rblock->remove_headers, expand_string_message); + addr->message = string_sprintf( + "%s router failed to expand remove_headers item \"%s\": %s", + rblock->name, s, expand_string_message); return DEFER; } } else if (*s) - *remove_headers = string_append_listele(*remove_headers, ':', s); + g = string_append_listele(g, ':', s); + + if (g) + *remove_headers = g->s; } return OK; } +/* vi: aw ai sw=2 +*/ /* End of rf_get_munge_headers.c */