[英]Security Vulnerability : What is the error in this piece of code?
我只是为了娱乐而独自阅读这本书 ,遇到了以下问题:
此代码存在安全漏洞; 您可以找到并修复它吗? :
bool isValidAddition(unsigned short x, unsigned short y)
{
if(x + y < x)
return false;
else
return true;
}
有人可以帮助我,识别此漏洞吗?
我们知道,根据C Standard
,以下几点是正确的:
- sizeof(short)<= sizeof(int)<= sizeof(long)
- sizeof(short)> = 2个字节,sizeof(int)> = 2个字节,sizeof(long)> = 4个字节
- 算术表达式中使用了操作数数据类型的隐式整数提升,这是由编译器完成的
因此,在上面的代码段中,请执行以下操作:
更改
if(x + y < x)
至
if((unsigned short)(x + y) < x)
如果int是4(或> 2)个字节,这将很麻烦
希望这可以帮助 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.