91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【缺陷周話】第31期:錯誤的內存釋放

發布時間:2022-01-18 15:04:09 來源:億速云 閱讀:122 作者:柒染 欄目:網絡管理

這篇文章主要為大家分析了【缺陷周話】第31期:錯誤的內存釋放的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“【缺陷周話】第31期:錯誤的內存釋放”的知識吧。

1、錯誤的內存釋放方法

C語言中常見的內存申請函數包括malloc()realloc()calloc(),它們雖然功能不同,但都對應同一個內存釋放函數 free(),C++中對內存的申請和釋放采用new/delete、new []/delete[] 方式。不管是 C 語言還是 C++ 語言,當編寫源代碼時要根據內存申請的方法不同來對應地選擇內存釋放方法,避免使用錯誤的內存釋放。例如:混合使用C/C++的內存申請/釋放,或混合使用標量和矢量的內存申請/釋放。

2、 錯誤的內存釋放方法的危害

使用錯誤的內存釋放方法,將會導致非預期的程序行為,甚至可能導致程序崩潰。在《effective C++(第二版)》條目5“對應的 new 和 delete 要采用相同形式”中指出:“如果錯誤地釋放對象中的元素,可能造成整個對象、甚至整個堆上的內存結構都發生損壞,從而發生內存泄漏,甚至導致程序崩潰”。

CVE中也有一些與之相關的漏洞信息,從2018年1月至2019年4月,CVE中就有3條相關漏洞信息。漏洞信息如下:

CVE漏洞概況
CVE-2018-14948dilawar sound2017-11-27 及之前版本中的 wav-file.cc文件存在錯誤的內存釋放方法漏洞 (new[]/delete)。
CVE-2018-14947PDF2JSON 0.69 版本中的 XmlFonts.cc 文件的‘XmlFontAccu::CSStyle’函數存在錯誤的內存釋放漏洞(new[]/delete)。
CVE-2018-14946PDF2JSON 0.69 版本中的 ImgOutputDev.cc 文件的 HtmlString 類存在錯誤的內存方法漏洞 (malloc/delete)。

3、示例代碼

示例源于 Samate Juliet Test Suite for C/C++ v1.3 (https://samate.nist.gov/SARD/testsuite.php),源文件名:CWE762_Mismatched_Memory_Management_Routines__new_array_delete_char_01.cpp。

3.1缺陷代碼

【缺陷周話】第31期:錯誤的內存釋放

在上述示例代碼中,第31行使用 new[] 創建對象數組,在第34行使用 delete 進行釋放,由于在釋放對象數組時,沒有使用 new[] 對應的 delete[],因此存在“錯誤的內存釋放方法”問題。

使用代碼衛士對上述示例代碼進行檢測,可以檢出“錯誤的內存釋放方法”缺陷,顯示等級為中。如圖1所示:

【缺陷周話】第31期:錯誤的內存釋放

圖1:錯誤的內存釋放方法的檢測示例

3.2 修復代碼

【缺陷周話】第31期:錯誤的內存釋放

在上述修復代碼中,Samate 給出的修復方式為:在第31行通過 new[] 創建對象數組,并在第33行使用 delete[] 進行釋放。從而避免了錯誤的內存釋放方法。

使用代碼衛士對修復后的代碼進行檢測,可以看到已不存在“錯誤的內存釋放方法”缺陷。如圖2:

【缺陷周話】第31期:錯誤的內存釋放

圖2:修復后檢測結果

4、  如何避免錯誤的內存釋放方法

要避免錯誤的內存釋放方法,需要注意以下幾點:

(1)在進行內存釋放時,明確內存申請使用的方法,避免由于程序結構復雜、人員疏忽而導致使用了錯誤的釋放方法。

(2)使用源代碼靜態分析工具,可以有效對該類問題進行檢測。

關于“【缺陷周話】第31期:錯誤的內存釋放”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

二连浩特市| 巴彦淖尔市| 清水县| 仙居县| 临夏市| 鹿泉市| 历史| 叶城县| 云阳县| 翁源县| 靖安县| 潜山县| 大同市| 和田市| 宜宾市| 涡阳县| 波密县| 耒阳市| 广宗县| 崇左市| 门头沟区| 满城县| 揭阳市| 明星| 盱眙县| 双城市| 庆安县| 乐平市| 云和县| 普兰店市| 广灵县| 沧源| 江油市| 萍乡市| 肃北| 黔南| 富平县| 东台市| 永昌县| 平昌县| 石景山区|