我自己正在阅读this book,只是为了好玩,并且遇到了以下问题:
此代码存在安全漏洞;你能找到并解决它吗? :
bool isValidAddition(unsigned short x, unsigned short y)
{
if(x + y < x)
return false;
else
return true;
}
有人可以帮助我,识别漏洞吗?
答案 0 :(得分:0)
根据C Standard
:
- sizeof(短)&lt; = sizeof(int)&lt; = sizeof(long)
- sizeof(短)&gt; = 2个字节,sizeof(int)&gt; = 2个字节,sizeof(长)&gt; = 4个字节
- 算术表达式中使用的操作数数据类型的隐式整数提升由编译器
完成
所以在上面的代码片段中执行以下操作:
更改
if(x + y < x)
到
if((unsigned short)(x + y) < x)
如果int是4(或&gt; 2)字节
,这将是worrk希望这会有所帮助:)