Unchecked Input for Loop Condition

代码安全检查问题,这种问题如何解决啊,我看解决方式有两种:1.用户控制的数据避免for循环2.输入验证。完全没思路。我就是要遍历用户的数据啊,不然如何实现业务逻辑。请大神帮忙

http://cwe.mitre.org/data/definitions/606.html

比如这个例子

 void iterate(int n){
int i;
for (i = 0; i < n; i++){
foo();
}
}
void iterateFoo()
{
unsigned int num;
scanf("%u",&num);
iterate(num);
}

如果用户输入-1,会导致死循环。
所以你需要在循环前判断下n(输入验证),或者不把用户输入作为循环条件(.用户控制的数据避免for循环)

说错了,如果用户输入一个很大的数,会导致循环很长时间