Fix uninitialised memory access

Avoid calling xs_type() on uninitialised memory when xs_extend() is
called with NULL data.
This commit is contained in:
Santtu Lakkala
2025-02-20 16:23:11 +02:00
committed by Santtu Lakkala
parent d40834edd1
commit 6d82708fbd
+4 -3
View File
@@ -398,6 +398,7 @@ xs_val *xs_dup(const xs_val *data)
xs_val *xs_expand(xs_val *data, int offset, int size)
/* opens a hole in data */
{
xstype type = xs_type(data);
int sz = xs_size(data);
int n;
@@ -410,9 +411,9 @@ xs_val *xs_expand(xs_val *data, int offset, int size)
for (n = sz - 1; n >= offset + size; n--)
data[n] = data[n - size];
if (xs_type(data) == XSTYPE_LIST ||
xs_type(data) == XSTYPE_DICT ||
xs_type(data) == XSTYPE_DATA)
if (type == XSTYPE_LIST ||
type == XSTYPE_DICT ||
type == XSTYPE_DATA)
_xs_put_size(data, sz);
return data;