From 8cbbce56e64c84b53593c815f6dcdd9214897b74 Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Sat, 29 Aug 2026 17:09:47 +0200 Subject: fix(receive): guard maxsize against size_t overflow on cast Casting a double larger than SIZE_MAX to size_t is undefined behavior; bound-check maxsize before the cast. --- src/buffer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/buffer.c') diff --git a/src/buffer.c b/src/buffer.c index 05d6fb3..5f06fc1 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -134,7 +134,8 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) { } if (!lua_isnoneornil(L, 4)) { double m = luaL_checknumber(L, 4); - luaL_argcheck(L, m >= 1, 4, "maxsize must be a positive number"); + luaL_argcheck(L, m >= 1 && m < (lua_Number) ((size_t) -1), 4, + "maxsize must be a positive number"); maxsize = (size_t) m; luaL_argcheck(L, size < maxsize, 4, "prefix length >= maxsize (drain with prefix=\"\" or raise maxsize)"); -- cgit v1.2.3-55-g6feb