Programming patterns such as looping over arrays of unknown size may lead to DoS when the gas cost of execution exceeds the block gas limit. (see here)
- Block Gas Limit -> 15M Currently
- Loop Index -> User Controlled
- Expensive Operations -> Out-of-Gas Error
- Evaluate Loops -> Prevent DoS