我对此很好奇。函数
但是,函数
strtol
不要求您指定要处理的字节数,因此理论上它可以处理包含无尽数字序列的字符串,从而导致拒绝服务攻击。当然,只要一旦long数据类型的精度已经耗尽(实际上不能超过二进制数的65个字符),就没有必要再读取任何内容,因此可以轻松地避免这种攻击。但是,函数
strtol
也需要丢弃多余的空格字符,直到遇到第一个非空格字符。所以,即使它在读取数字时很聪明,如果输入一个无尽的空格字符串,它是否也会受到攻击呢?
fgets()
(和sscanf()
)来读取用户输入! - pmgstrtol
来进行DOS攻击。 - Blastfurnace