簡體   English   中英

大小為-1的向量使Flash Player崩潰,沒有錯誤處理

[英]Vector of size -1 crashes flash player with no error handling

我今天在Flash Player 11中發現了一個有趣的錯誤。 也可能是其他版本。 如果啟用了調試跟蹤,我可以用一行代碼立即使Flash Player瀏覽器崩潰,不引發運行時錯誤,並且僅顯示一條消息退出:“錯誤:內存不足”。

構建大小為-1的向量。

var vector:Vector.<int> = new Vector.<int>(-1);

而且po,您的整個應用程序都放棄了。 數組至少會引發“超出范圍”的運行時錯誤。 這怎么不抓? 由於未處理,它是否可能導致漏洞利用?

還有其他人遇到嗎? 我在11.4.31.110和11.2.202.235版本中進行了測試

可能是因為構造函數期望一個無符號的int(僅正數)。

將-1轉換為無符號int會得到4,294,967,295,這將使內存不足錯誤更有意義。 提交錯誤報告可能很有意義。 否則,不要那樣做:)

負內存如何分配?

Vector。<T>()構造函數希望將unsigned int和boolean作為參數:

public function Vector(length:uint = 0, fixed:Boolean = false)
  • length uint(默認= 0)— Vector的初始長度(元素數)。 如果此參數大於零,則將創建指定數量的Vector元素,並使用適合於基本類型的默認值(對於引用類型為null)進行填充。
  • fixed:Boolean(默認= false)— Vector的長度是固定的(true)還是可以更改的(false)。 也可以使用fixed屬性設置此值。

同樣,訪問Vector的length屬性也是uint

從0減去1將導致整數溢出 ,這很可能是您的錯誤。

如果嘗試通過初始化為-1來以編程方式導出狀態,則應將向量設置為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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