簡體   English   中英

安全漏洞:這段代碼有什么錯誤?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM