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