On Tue, Mar 19, 2019 at 02:46:02PM -0400, Viktor Dukhovni wrote:

> > it turns out that this usage of `var_message_limit` is missing the check
> > of `var_message_limit > 0` that in other places enables `0` to mean
> > "no limit", and thus it enforces a limit of 0 with my config :(
> 
> Correct.  The code should read:
> 
> --- src/smtpd/smtpd.c
> +++ src/smtpd/smtpd.c
> @@ -3878,7 +3878,8 @@ static int bdat_cmd(SMTPD_STATE *state, int argc, 
> SMTPD_TOKEN *argv)
>       }
>      }
>      /* Block too large chunks. */
> -    if (state->act_size > var_message_limit - chunk_size) {
> +    if (var_message_limit > 0
> +     && state->act_size > var_message_limit - chunk_size) {
>       state->error_mask |= MAIL_ERROR_POLICY;
>       msg_warn("%s: BDAT request from %s exceeds message size limit",
>                state->queue_id ? state->queue_id : "NOQUEUE",

Note that, perhaps unintentionally, the treatment of "message_size_limit
= 0" is not documented to mean "no limit".  Perhaps we should also
address that.

-- 
        Viktor.

Reply via email to