[英]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.