From: Vsevolod Stakhov Date: Sat, 8 Nov 2025 20:24:00 +0000 (+0000) Subject: [Fix] Floor batch_size to integer to prevent fractional indexing X-Git-Tag: 3.14.0~7^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=90c7b226cfc97fdc2423a96844160e1984fde382;p=thirdparty%2Frspamd.git [Fix] Floor batch_size to integer to prevent fractional indexing Use math.floor() to convert batch_size to integer before using in loops. Fractional values like 1.5 would cause batch_start (e.g. 2.5) to index results[] with non-integer, returning nil and crashing prepare_report() with 'string expected, got nil'. --- diff --git a/lualib/rspamadm/dmarc_report.lua b/lualib/rspamadm/dmarc_report.lua index 1e67212373..da81a14831 100644 --- a/lualib/rspamadm/dmarc_report.lua +++ b/lualib/rspamadm/dmarc_report.lua @@ -668,8 +668,9 @@ local function handler(args) local opts = parser:parse(args) - -- Normalize batch_size to prevent invalid values (0 or negative) breaking loops - opts.batch_size = math.max(1, opts.batch_size or 10) + -- Normalize batch_size: floor to integer and clamp to >= 1 + -- Fractional values would break array indexing in batching loops + opts.batch_size = math.max(1, math.floor(opts.batch_size or 10)) pool = rspamd_mempool.create() load_config(opts)