The contract grants an allowance to an external spender and never resets it, leaving a standing approval that a later-compromised spender can drain.
token.safeIncreaseAllowance(router, amt);
// ... after use:
token.safeDecreaseAllowance(router, token.allowance(address(this), router));
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0090 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.