mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-10-27 12:31:03 +00:00
helper: fix OOB read in grab_extradata_lua bounds check
The loop in grab_extradata_lua checked *next != 0 in the loop condition before the body could test next == end, so when next reached end the byte *end was read out-of-bounds. The non-Lua sibling grab_extradata had the correct order (test next == end before dereferencing). Fix by adopting the same idiom. Security: a DHCP client can supply a vendor-class option whose content fills the extradata buffer with no trailing NUL, causing a 1-byte OOB read in the Lua helper child (already non-root). Requires HAVE_LUASCRIPT and a configured Lua script. Not feasible for triggering a crash from remote reliably. Signed-off-by: Dominik <dl6er@dl6er.de>
This commit is contained in:
1 parent
b12a9249f6
commit
9e3e0465cd
1 file changed
+3
-1
+3
-1
@@ -740,9 +740,11 @@ static unsigned char *grab_extradata_lua(unsigned char *buf, unsigned char *end,
|
||||
if (!buf || (buf == end))
|
||||
return NULL;
|
||||
|
||||
for (next = buf; *next != 0; next++)
|
||||
for (next = buf; ; next++)
|
||||
if (next == end)
|
||||
return NULL;
|
||||
else if (*next == 0)
|
||||
break;
|
||||
|
||||
if (next != buf)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user