gpt4 book ai didi

c - `strtol` 的实现是什么?

转载 作者:行者123 更新时间:2023-12-02 00:29:52 25 4
gpt4 key购买 nike

我只是好奇这个。 strtol 不需要您指定要处理的字节数,因此理论上它可能会被提供一个包含无穷无尽的数字序列的字符串以供使用,从而导致拒绝服务攻击。当然,一旦意识到 long 的精度已经用尽(实际上不可能超过二进制数的 65 个字符),就很容易受挫,没有任何进一步阅读的意义。

但是,strtol 还需要根据需要丢弃尽可能多的空白字符,直到遇到第一个非空白字符。那么即使它在读取数字方面很聪明,它也不会受到无穷无尽的空白字符串的攻击吗?

最佳答案

However, strtol is also required to discard as many whitespace characters as necessary until the first non-whitespace character is encountered. So could it not be attacked with an endless whitespace string even if it is smart about reading digits?

由于 strtol 对内存中已有的字符串起作用,因此您必须在之前存储(并从攻击者那里读取)“无穷无尽”的空白(或忘记以 NUL 终止您的字符串)甚至把它喂给 strtol。

由于实现可以不断计算有效字符串中可能存在的最大位数,因此它不必像您怀疑的那样继续计算。

DOS 攻击可能会因实现错误而发生,请查看 this相关案例(这是在 java 和 PHP 中读取 double 时的情况,但在 C 或 C++ 实现中也可能发生)。

关于c - `strtol` 的实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7457163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com