From e66b94d04012d1cd4cd44256a7138cb579821339 Mon Sep 17 00:00:00 2001 From: FUTATSUKI Yasuhito Date: Sun, 25 Aug 2024 05:09:36 +0900 Subject: [PATCH] issue #222: Don't treat empty body as partial if "Minimum" option is set. * opendkim/opendkim.c (mlfi_eom) --- opendkim/opendkim.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/opendkim/opendkim.c b/opendkim/opendkim.c index 803f37b0..55069944 100644 --- a/opendkim/opendkim.c +++ b/opendkim/opendkim.c @@ -14026,29 +14026,33 @@ mlfi_eom(SMFICTX *ctx) sig, &bodylen, &canonlen, NULL); - if (conf->conf_sigmintype == SIGMIN_PERCENT) + /* In the case body is empty, we don't treat it as partial */ + if (bodylen) { - size_t signpct; + if (conf->conf_sigmintype == SIGMIN_PERCENT) + { + size_t signpct; - signpct = (100 * canonlen) / bodylen; + signpct = (100 * canonlen) / bodylen; - if (signpct < conf->conf_sigmin) - dfc->mctx_status = DKIMF_STATUS_PARTIAL; - } - else if (conf->conf_sigmintype == SIGMIN_MAXADD) - { - if (canonlen + conf->conf_sigmin < bodylen) - dfc->mctx_status = DKIMF_STATUS_PARTIAL; - } - else - { - size_t required; + if (signpct < conf->conf_sigmin) + dfc->mctx_status = DKIMF_STATUS_PARTIAL; + } + else if (conf->conf_sigmintype == SIGMIN_MAXADD) + { + if (canonlen + conf->conf_sigmin < bodylen) + dfc->mctx_status = DKIMF_STATUS_PARTIAL; + } + else + { + size_t required; - required = MIN(conf->conf_sigmin, - bodylen); + required = MIN(conf->conf_sigmin, + bodylen); - if (canonlen < required) - dfc->mctx_status = DKIMF_STATUS_PARTIAL; + if (canonlen < required) + dfc->mctx_status = DKIMF_STATUS_PARTIAL; + } } } }