]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Floor batch_size to integer to prevent fractional indexing
authorVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 8 Nov 2025 20:24:00 +0000 (20:24 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 8 Nov 2025 20:24:00 +0000 (20:24 +0000)
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'.

lualib/rspamadm/dmarc_report.lua

index 1e6721237309cfb11b04c7578dafd8eb07f84a68..da81a1483185da47dfac78a1ee7eddc1948d1850 100644 (file)
@@ -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)