Viktor Dukhovni:
> On Wed, Sep 30, 2015 at 12:54:51PM +0200, Daniel Caillibaud wrote:
> 
> > I have quite a lot (~200 / day)
> >   panic: cleanup_find_header_start: short header without padding
> > in my mail.log
> 
> The patch below might help:

Indeed.  The bug was that all PREPENDed text was output with
cleanup_out_string(), whereas headers must be output with
cleanup_out_header().

        Wietse

> diff --git a/src/cleanup/cleanup_message.c b/src/cleanup/cleanup_message.c
> index 47b7177..b0ae686 100644
> --- a/src/cleanup/cleanup_message.c
> +++ b/src/cleanup/cleanup_message.c
> @@ -385,11 +385,15 @@ static const char *cleanup_act(CLEANUP_STATE *state, 
> char *context,
>      if (STREQUAL(value, "PREPEND", command_len)) {
>       if (*optional_text == 0) {
>           msg_warn("PREPEND action without text in %s map", map_class);
> -     } else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0
> -                && !is_header(optional_text)) {
> -         msg_warn("bad PREPEND header text \"%s\" in %s map -- "
> -                  "need \"headername: headervalue\"",
> -                  optional_text, map_class);
> +     } else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0) {
> +         if (!is_header(optional_text)) {
> +             msg_warn("bad PREPEND header text \"%s\" in %s map -- "
> +                      "need \"headername: headervalue\"",
> +                      optional_text, map_class);
> +             return (buf);
> +         }
> +         cleanup_act_log(state, "prepend", context, buf, optional_text);
> +         cleanup_out_header(state, optional_text);
>       } else {
>           cleanup_act_log(state, "prepend", context, buf, optional_text);
>           cleanup_out_string(state, REC_TYPE_NORM, optional_text);
> 
> -- 
>       Viktor.
> 

Reply via email to