Batch functions take parallel arrays (recipients[], amounts[]) without checking equal length, causing out-of-bounds reverts or, worse, silent misalignment of values.
function airdrop(address[] calldata to, uint[] calldata amt) external {
require(to.length == amt.length, "length");
for (uint i; i<to.length; i++) token.safeTransfer(to[i], amt[i]);
}
Largest recorded losses in the same failure class — related, not the same bug:
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0074 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.