原創|行業資訊|編輯:鄭恭琳|2020-06-02 09:56:10.443|閱讀 1265 次
概述:MISRA C工作組發布了對MISRA C:2012的修訂版,以支持稱為“C11”的C標準,并正式批準為ISO/IEC 9899:2011。C11已得到廣泛使用,對于一直推遲遷移到C11的項目和組織,這是一個廣受歡迎的公告。C11還取代了C99(標準ISO/IEC 9899:1999),并已被C18(標準ISO/IEC 9899:2018)取代。除了更新的C語言準則之外,MISRA C工作組還發布了MISRA 2020合規性指南,現在必須聲明該聲明符合該標準。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
MISRA C工作組發布了對MISRA C:2012的修訂版,以支持稱為“C11”的C標準,并正式批準為ISO/IEC 9899:2011。C11已得到廣泛使用,對于一直推遲遷移到C11的項目和組織,這是一個廣受歡迎的公告。C11還取代了C99(標準ISO/IEC 9899:1999),并已被C18(標準ISO/IEC 9899:2018)取代。除了更新的C語言準則之外,MISRA C工作組還發布了MISRA 2020合規性指南,現在必須聲明該聲明符合該標準。
MISRA C:2012(修訂版2)現在引用ISO/IEC 9899:2011,并包含C語言更新,為可能使用但受限制的功能和受禁止的功能提供指導,除非其存在您的團隊軟件審查過程已批準的偏差。在制定修訂版2的過程中,還獲得了利用先前的補充內容糾正任何已知問題的機會。MISRA工作組的任務不止是提供指導,以防止發生不可預測的行為,減少或消除編碼缺陷并在嵌入式軟件系統的環境中促進代碼安全、安全性、可移植性和可靠性。
添加了適用于C11中新功能的新MISRA規則的一個示例,即規則1.4,“不得使用緊急語言功能。” 如果使用設施<threads.h>和_Thread_local存儲類說明符,則可能是這種情況的一個實例。該規則將使用違反類別類型“必需”標記C11語言結構。C11標準化了可能在多核平臺上運行的多線程程序的語義,以及使用原子變量的輕量級線程間通信。使用線程本地的全局內存,其中已標識出未定義和未指定行為的實例,包括未滿足預期的已定義行為。 向前邁進并符合MISRA C:2012(修訂版2),如果我使用_Thread_local,不僅需要進行偏離,而且還需要采取保證措施來解決危害安全性的行為。
_Generic關鍵字是另一個不應使用的C11語言新功能,它可能表現出不良行為,并且一些人發現C11標準在某些情況下含糊不清。_Generic運算符是一種宏重載。它用于幫助程序員將任何宏都用作通用宏,以使其更高效。下面的代碼行顯示_Generic關鍵字如何用于聲明不同類型的數據類型的任何宏,以及如何將其聲明為不同方法的泛型。以下面的VOL宏示例為例;VOL(x)根據x的類型轉換為VOLc(x),VOLl(x),VOL(x)或VOLf(x)。
#define VOL(x) _Generic((x), char: VOLc, long double: VOLl, default: VOL, float: VOLf)(x)
安全漏洞的一個常見原因是使用了<stdlib.h>中定義的標準庫函數系統。MISRA C:2012(修訂版2)添加了新的規則21.21,該規則規定不得使用標準庫函數系統。系統調用是一個阻塞函數,用于執行子進程和命令,等待子進程終止并返回其退出值。認識到原型為“int系統(const char *command);”不需要是單個命令,而可以是一個管道或一系列管道。(例如,系統("pngtopnm \"My Picture.png\" | pnmtoxwd > fout.xwd && xwud fout.xwd");)由于可變命令是由用戶提供的數據構成的,因此攻擊者可能會發現 引用并在父級上下文中執行任意命令。一些建議的措施可能是利用預定的命令字符串或一起繞開系統調用,而使用spawn代替。
對于聲稱符合MISRA的要求,有一些書面指南,這些指南在過去的幾年中不斷完善和修訂。本文檔的最新版本是MISRA Compliance 2020,它于2月發布。從較高的角度來看,適當報告了使用良好的軟件開發過程的使用情況,準確地應用了哪些指南以及執行方法的有效性的列表,包括偏差的程度或程度,以及為了聲稱MISRA符合要求,必須考慮到項目外開發的所有軟件組件的狀態。Parasoft DTP提供了專用的報告擴展,完全符合MISRA Compliance標準的要求。DTP將指導您完成構建準則執行計劃(GEP)和準則重新分類計劃(GRP)的過程,并自動生成準則合規摘要(GCS)以及已批準偏差的完整列表。自動化報告消除了繁瑣的手工工作,使組織能夠遵循MISRA編碼準則現在強制執行的合規性流程。
還有其他新的MISRA C:2012(修訂版2)規則,例如_Noreturn函數說明符、_Atomic類型說明符、_Alignas對齊說明符和_Alignof運算符,非常引人注目。 使用這些類型說明符將觸發類別“必需的違規”,并且將不被使用,從而解決了C11覆蓋和安全漏洞的問題。此外,還進行了許多修訂版2更新和文本替換,以澄清和改進標準。同樣,再次提醒您非常重要的一點是,與該標準一起,用戶現在可以遵循MISRA Compliance 2020指南的強制性和補充性法規遵循版本。感謝MISRA工作組繼續做出色的工作,并為軟件界做出了巨大貢獻。
要了解有關MISRA與Parasoft的合規性的更多信息,請!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn