Array slice overflows (fix #1108)

This commit is contained in:
Nicolas Williams committed 2017-03-01 17:48:45 -06:00
1 parent 2fcb257168
commit 65cbaac344
2 files changed
+21 -4

No files matched your search

+12 -4
View File
@@ -296,10 +296,18 @@ static jv jvp_array_slice(jv a, int start, int end) {
jv_free(a);
return jv_array();
}
// FIXME FIXME FIXME large offsets
a.offset += start;
a.size = end - start;
return a;
if (a.offset + start > 1 << (sizeof(a.offset) * CHAR_BIT)) {
jv r = jv_array_sized(end - start);
for (int i = start; i < end; i++)
r = jv_array_append(r, jv_array_get(jv_copy(a), i));
jv_free(a);
return r;
} else {
a.offset += start;
a.size = end - start;
return a;
}
}
/*