2020年3月28日, John Toman 发现该漏洞。
影响版本 version < 0.6.5, 低危。
如果动态数组的长度用户可控。则会越界读到其他内存空间。也可能因为过长导致DoS。
contract C {
function f(uint length, AnotherContract c, uint index) public {
uint[] memory x = new uint[](length);
uint[] memory y = new uint[](4);
y[0] = c.g(x[index]);
y[1] = c.g(x[index + 1]);
y[2] = c.g(x[index + 2]);
y[3] = c.g(x[index + 3]);
c.h(y);
}
}