夢斷代碼2-隱性泄漏-內存溢出-越界改寫

我擦,我要上圖,泄漏內存越界改寫的程序員們都該燒死FFFlinux

我已經死過多遍了。上圖。程序員

 

在協議棧內核處理進程中,有一個如影隨形的trace模塊,數據包進來之後會被trace記錄信息,以供給各層協議進行只讀操做。某天佛山網吧接入路由出現四五天定時斷線死機,log模塊也沒記錄那麼多內容,並且四五天才會死機一次,因此復現也挺麻煩。組長找人跟進提測,N天以後找到我負責的ppp模塊,在ppp模塊有一個比較簡單的用於回調的處理進程,用於專門處理auth、trace任務,任務棧空間4k。某日G君跟到ppp這裏發現一層的ppp work處理函數赫然躺着char buff[4096];的數組這種不經內存申請檢測的代碼。我擦。。。。燒死FFF數組

 

建議:vxWorks屬於平坦的整塊內存,不像linux分層保護內存機制,因此通常在任務處理時須要對內存大小進行嚴格規劃;另一種方法是申請內存池,也能很好的規劃好使用的內存空間而防止越界問題;設計hash時,空間以經驗的4倍爲宜能夠在必定程度上取得空間大小和衝突避免的平衡。函數

相關文章
相關標籤/搜索