A loop makes external calls and bubbles up the raw revert reason (or copies returndata). A malicious callee returns a huge revert payload, inflating the caller's gas and potentially reverting the whole batch.
// for each t: t.call(data) and revert(returndata) on failure. // one t returns a 1MB revert reason -> the batch pays quadratic memory // gas and reverts for everyone.
// use a bounded/low-level call that ignores returndata size
(bool ok, ) = target.call{gas: 50000}(data);
if (!ok) { /* record and continue, don't bubble raw returndata */ }
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0243 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.