refactor(core): refactor NFC driver to allow easier support for different ST chips
What changed, and why it matters
This commit is a large code reorganization of the NFC (Near Field Communication) driver inside Trezor firmware. It moves the ST25R3916 RFAL library from one directory to another and updates build paths and board configuration files accordingly. There is no indication in the commit message or diff that this fixes a security vulnerability; it is described as a refactoring to make it easier to support different STMicroelectronics chips in the future. The change is mostly a directory rename plus path updates, with no functional security fix visible in the diff.
No security action required. Treat as routine refactoring. If reviewing for supply-chain assurance, verify that the moved RFAL files match the expected ST version 4.0.2 and that no unintended modifications were introduced during the directory rename.
Security signals we found
No security-relevant code changes detected
Commit is a directory restructure / rename of third-party RFAL NFC library
No changelog entry requested by commit author
No mention of CVE, vulnerability, or security fix in commit metadata
Evidence from the diff
The commit refactors the NFC driver by relocating the RFAL middleware from core/embed/io/nfc/rfal/ to core/embed/io/nfc/st25/rfal002/ and updating include/build paths. It also updates .editorconfig ignore rules and T3W1 board/SCons model files to reference the new paths. The diff is dominated by deletion of the old RFAL directory contents and addition of the same files under the new path. No security-relevant code changes are present in the visible diff; the commit message explicitly calls this a refactor and includes ‘[no changelog]’.
Changed components
core/embed/io/nfc/st25/rfal002/*core/embed/io/nfc/st25/card_emulation.ccore/embed/io/nfc/st25/card_emulation.hcore/embed/io/nfc/st25/ndef.ccore/embed/io/nfc/st25/ndef.hcore/embed/io/nfc/st25/nfc.ccore/embed/io/nfc/st25/nfc_internal.hcore/embed/io/nfc/st25/rfal_platform.hcore/embed/models/T3W1/boards/*core/site_scons/models/T3W1/*.editorconfigtools/style.c.excludeInspect captured patch +63025 / −63022
diff --git a/.editorconfig b/.editorconfig
index aaa22ea2..fa55901d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -18,7 +18,7 @@ insert_final_newline = unset
trim_trailing_whitespace = unset
# Ignore rfal nfc library
-[/core/embed/io/nfc/rfal/**]
+[/core/embed/io/nfc/st25/rfal*/**]
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
diff --git a/core/embed/io/nfc/rfal/LOCAL_CHANGES.md b/core/embed/io/nfc/rfal/LOCAL_CHANGES.md
deleted file mode 100644
index 558d34f8..00000000
--- a/core/embed/io/nfc/rfal/LOCAL_CHANGES.md
+++ /dev/null
@@ -1,11 +0,0 @@
-
-RFAL middleware was imported into trezor-firmware to support a low level NFC operations of st25r3916b from
-https://www.st.com/en/embedded-software/stsw-st25rfal002.html (version 3.0.1)
-
-# RFAL update 4-Nov-2025:
-RFAL middleware updated to version 4.0.2 from https://www.st.com/en/embedded-software/stsw-st25rfal002.html
-
-# Local changes
-
-1. rfalIsoDepInfo structure defined in include/rfal_isoDep.h and rfalNfcDepInfo include/rfal_nfcDep.h contains variable DSI which colide with the DSI macro in
-STM32 HAL drivers. To resolve this, variale in RFAL library was refactored to DSI_ID.
\ No newline at end of file
diff --git a/core/embed/io/nfc/rfal/doc/Release_Notes.html b/core/embed/io/nfc/rfal/doc/Release_Notes.html
deleted file mode 100644
index e24b9cda..00000000
--- a/core/embed/io/nfc/rfal/doc/Release_Notes.html
+++ /dev/null
@@ -1,487 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head>
-
- <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-
-
- <link rel="File-List" href="Library_files/filelist.xml">
-
-
- <link rel="Edit-Time-Data" href="Library_files/editdata.mso">
-
-<!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]-->
- <title>Release Notes for RFAL Library</title>
-
-
-<!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>STMicroelectronics</o:Author> <o:LastAuthor>STMicroelectronics</o:LastAuthor> <o:Revision>37</o:Revision> <o:TotalTime>136</o:TotalTime> <o:Created>2009-02-27T19:26:00Z</o:Created> <o:LastSaved>2009-03-01T17:56:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>522</o:Words> <o:Characters>2977</o:Characters> <o:Company>STMicroelectronics</o:Company> <o:Lines>24</o:Lines> <o:Paragraphs>6</o:Paragraphs> <o:CharactersWithSpaces>3493</o:CharactersWithSpaces> <o:Version>11.6568</o:Version> </o:DocumentProperties> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:Zoom>110</w:Zoom> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]-->
-
- <style>
-<!--
-/* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-{mso-style-parent:"";
-margin:0in;
-margin-bottom:.0001pt;
-mso-pagination:widow-orphan;
-font-size:12.0pt;
-font-family:"Times New Roman";
-mso-fareast-font-family:"Times New Roman";}
-h2
-{mso-style-next:Normal;
-margin-top:12.0pt;
-margin-right:0in;
-margin-bottom:3.0pt;
-margin-left:0in;
-mso-pagination:widow-orphan;
-page-break-after:avoid;
-mso-outline-level:2;
-font-size:14.0pt;
-font-family:Arial;
-font-weight:bold;
-font-style:italic;}
-a:link, span.MsoHyperlink
-{color:blue;
-text-decoration:underline;
-text-underline:single;}
-a:visited, span.MsoHyperlinkFollowed
-{color:blue;
-text-decoration:underline;
-text-underline:single;}
-p
-{mso-margin-top-alt:auto;
-margin-right:0in;
-mso-margin-bottom-alt:auto;
-margin-left:0in;
-mso-pagination:widow-orphan;
-font-size:12.0pt;
-font-family:"Times New Roman";
-mso-fareast-font-family:"Times New Roman";}
-@page Section1
-{size:8.5in 11.0in;
-margin:1.0in 1.25in 1.0in 1.25in;
-mso-header-margin:.5in;
-mso-footer-margin:.5in;
-mso-paper-source:0;}
-div.Section1
-{page:Section1;}
--->
- </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="5122"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]-->
-
- <meta content="MCD Application Team" name="author">
-
-</head><body link="blue" vlink="blue">
-<div class="Section1">
-<p class="MsoNormal"><span style="font-family: Arial;"><o:p><br>
-</o:p></span></p>
-<div align="center">
-<table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" cellspacing="0" width="900">
- <tbody>
- <tr>
- <td style="padding: 0cm;" valign="top">
- <table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" cellspacing="0" width="900">
- <tbody>
- <tr>
- <td style="vertical-align: top;"> <br>
- </td>
- </tr>
- <tr style="">
- <td style="padding: 1.5pt;">
- <h1 style="margin-bottom: 18pt; text-align: center;" align="center"><span style="font-size: 20pt; font-family: Verdana; color:#3CB4E6;">Release
-Notes for RFAL software Library</span><span style="font-size: 20pt; font-family: Verdana;"><o:p></o:p></span></h1>
- <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: Arial; color: black;">Copyright
-2017-2025 STMicroelectronics</span><span style="color: black;"><u1:p></u1:p><o:p></o:p></span></p>
- <p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt; font-family: Arial; color: black;"><img style="border: 0px solid ; width: 104px; height: 77px;" alt="" id="_x0000_i1025" src="_htmresc/st_logo.png"></span><span style="font-size: 10pt;"><o:p></o:p></span></p>
- </td>
- </tr>
- </tbody>
- </table>
- <p class="MsoNormal"><span style="font-family: Arial; display: none;"><o:p> </o:p></span></p>
- <table class="MsoNormalTable" style="width: 675pt;" border="0" cellpadding="0" width="900">
- <tbody>
- <tr>
- <td class="MsoNormal" style="padding: 0cm;" valign="top"><br>
- <div style="margin-left: 40px;"><span style="font-size: 10pt; font-family: Verdana;">The <span style="font-weight: bold; font-style: italic;">RFAL Library</span>
-(RF Abstraction Layer) provides several functionalities required to perform RF/NFC communications.</span><span style="font-size: 10pt; font-family: Verdana;">
-The RFAL encapsulates the different RF ICs (ST25R3911, ST25R3916, ST25R200, ST25R500, ST25R95 and future ST25R devices) into a common and easy to use interface.</span><br>
- <span style="font-size: 10pt; font-family: Verdana;"> </span><br>
- <span style="font-size: 10pt; font-family: Verdana;"> </span><span style="font-size: 10pt; font-family: Verdana;">The technologies currently supported by RFAL are:
- <ul>
- <li> NFC-A \ ISO14443A (T1T, T2T, T4TA) </li>
- <li> NFC-B \ ISO14443B (T4TB) </li>
- <li> NFC-F \ FeliCa (T3T) </li>
- <li> NFC-V \ ISO15693 (T5T) </li>
- <li> P2P \ ISO18092 (NFCIP1, Passive-Active P2P) </li>
- <li> ST25TB (ISO14443-2 Type B with Proprietary Protocol) </li>
- <li> PicoPass \ iClass </li>
- <li> B' \ Calypso </li>
- <li> CTS \ CTM </li>
- </ul>
- </span><br>
- <span style="font-size: 10pt; font-family: Verdana;"> </span><span style="font-size: 10pt; font-family: Verdana;">The protocols provided by RFAL are:
- <ul>
- <li> ISO-DEP (ISO14443-4) </li>
- <li> NFC-DEP (ISO18092) </li>
- </ul>
- <br>
- </span></div>
- <ol style="margin-top: 0cm;" start="1" type="1">
- </ol>
- <span style="font-family: "Times New Roman";"> </span>
- <h2 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><a name="History"></a><span style="font-size: 12pt; color: white;">Update History</span></h2>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V4.0.2 / 02-Apr-2025</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Fixed vulnerability during EMD handling on fast systems, introduced at v4.0.0 targeted for high latency systems <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V4.0.0 / 17-Mar-2025</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> ST25R500/ST25R300 support added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> ISO-DEP improved. Fixed SFGI usage in Listen mode, ISO-DEP FSD check in Reader mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Improved robustness for EMD handling on high latency systems <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Improve portability using uintptr_t (C99) <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added support for Direct Command chaining <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Several improvements on Card Detection and Heartbeat <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> DPO module extended. Configurable measurement and adjust methods, interfaces and new adjustment flag added. <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> DPO CR (Current Regulation) added (ST25R500 only) <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added Dynamic LMA module. Optional LMA adjustments can be used in Listen/CE mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Several new APIs added in rfalChip section for more measurments and adjustments <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> New RFAL_CMATH switch added to enable the usage of C mathematical operations - previously RFAL_ACCURATE_RSSI <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Removed obsolete compile switches <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> New timer API to retrieve remaining time <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Several driver improvements and fixes <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V3.0.1 / 12-Sep-2024</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Fixed condition that prevents usage of WU default parameters on ST25R3916 (not ST25R3916B) if AAT enabled <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V3.0.0 / 10-Jun-2024</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> ST25R200/ST25R100 support added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Changed rfalDeinitialize procedure to ensure ST25R is set in PD mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added new interface to check whether Wake-up mode is enabled <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended NFC/HL to allow to configure whether to poll ahead of going to wake-up mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Improved ISO-DEP buffer handling during Listen mode activation <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Improved RFAL NFC/HL layer handling during discovery, particularly for AP2P <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> DPO extended to allow adjustment without a communication mode previously set <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Updated ST25R3916 to ensure MOSI state during read operation <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended MISRA C / CERT C coverage to DPO and CD modules <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Introduced WLC WPT API declarations <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Several driver improvements and fixes <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.10.0 / 16-Fev-2024</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Feature switches no longer disabled by omission. User configs at rfal_platform.h or by default by rfal_defConfig.h <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Ensure ST25R3916B AWS is disabled during regulator adjustment <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended WU mode to allow the reference measurement to be obtained from WU/PD mode (ST25R3911 and ST25R3916) <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended NFC/HL to allow to configure whether to poll ahead of going to wake-up mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Changed NFC/HL to only initialize Analog Configuration if not yet performed <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added new interface to check if Wake-up mode is enabled <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended LED support for debug purposes <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> ISO-DEP extended to ensure NFC-B TR2 / FDT Poll <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Updated DID handling in ISO-DEP <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added Listen mode modulation Get and Set interfaces <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Introduced Listen mode External Field On callback <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> ST25TB UID integrity checked during Pcall16 anticollision <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Several driver improvements and fixes <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.8.0 / 14-Dez-2022</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Incorporated RFAL dependecies (utils, errno) into library to make library more self-contained <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Prepended RFAL prefix into user configuration file platform.h --> rfal_platform.h (breaks compatibility with previous versions, see example in rfal.chm)) <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Introduced default configuration rfal_defConfig.h <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Improved ISO-DEP Deselect sequence <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Changed the RFAL NFC/HL layer to make use of non blocking ISO-DEP Deselect procedure <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Several improvements and fixes on RFAL NFC/HL layer, including deactivation procedure and compliance mode used for ISO-DEP <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended ISO15693 anticollsion APIs to allow larger receptions <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Improved library error checking and portability <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> New APIs introduced in rfalChip interface <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended rfalLowPowerModeStart to receive a mode to be set <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added RFAL Card Detection/Protection module <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Several driver improvements and fixes <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.6.0 / 19-Jan-2022</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Introduced support for ST25R3916B <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended NFC technology modules with non-blocking APIs for card activation (Technology detection, Collision Resolution and Activation)<span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended NFC/HL module with option to bail out, deactivation types, and usage of new non-blocking APIs <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added new transceive flag for CRC check on Rx <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Better aligned NFC-V special frame timings to NFC Forum Digital <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Further improved compliance to CERT C <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Corrected PAD length in SENSF_RES <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Modified Field Detector to manual setting for RF Collision avoidance / Field On (ST25R3916) due to high temperature limitation <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Changed default Field On mechanism from RF Collision avoidance to transmitter enable (ST25R3911) due to high temperature limitation <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Several driver improvements and fixes <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.4.0 / 14-Jun-2021</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Aligned to NFC Forum CR12 <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> EMD error handling simplified/renamed <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> SW license disclaimer updated <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added ST25R device selection check <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Improved SPI initialization sequence <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Modified certain chip specific features/definitions <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added API for retrieving Wake-up status <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended available parameters on NFC/HL module <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Introduced support for proprietary NFC technology on NFC/HL module <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Introduced Transceive start synchronization callback <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended support for non-blocking activation <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Extended ST25R3916 SW Tag Detection with fractional delta option <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Improved compliance to CERT C <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Added handling for ST25R3916 PPON2 timer limitation <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;"> Several driver improvements and fixes <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.2.0 / 22-May-2020</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Better alignment to NFC Forum latest requirements (CR12) <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended NFC-V module with non-addressed mode support and improved aticollision <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Feature Switches changed to be not mandatory. Modules disabled by default <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Aligned APIs on platform.h <i>(breaks compatibility with previous versions, see example in rfal.chm)</i> <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added API for release/deletion of timers <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">ST25R3916 default analog table modified to X-NUCLEO-NFC06A1 board <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Improved AP2P operation <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed issues introduced on previous release linked to SFGT and anticollision retries <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Introduced Low-Power mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several driver improvements <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.1.2 / 27-Jan-2020</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended ISO-DEP and NFC-A module to support non-blocking activation interfaces <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended NFC/HL module to make use of the new APIs further splitting the execution of the worker during the different activities<span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Modified NFC-A anticollision to strictly comply to NFC Forum DP. A separate proprietary method is now available. <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">NFC-V changed to use OOK (100% AM) by default <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed FWT used by NFC-V Sleep <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed NFC-F FDT Poll value <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed incorrect register access on ST25R3911B RFO Get/Set method <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">SPI driver modified to clear Rx buffer prior to operation <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added further code size optimizations based on enabled features <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Updated ST25R3916 driver to DS Rev2 <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Updated SW Tag Detection as describded in AN Rev3 <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several driver improvements <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.1.0 / 30-Sep-2019</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended RFAL NFC Higher Layer for increased functionality and configurations <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several improvements on the ISO-DEP protocol layer <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Protocol buffer sizes made fully configurable for increased memory management <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Introduced option for Collision Avoidance with Automatic Gain Control <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several driver improvements <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">ST25R3916 overheat protection disabled <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">RF Transceive modified for transmission errors to precede other errors <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Analog Configs extended to support different DPO power levels <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.0.10 / 25-Jun-2019</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Various improvements on RFAL NFC Higher layer <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added alternative NFC-V anticollision method (non NFC Forum compliant) <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several minor improvements and fixes <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.0.6 / 10-Apr-2019</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;"></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several NFC-V interoperability improvements <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended support for specific features of ST's ISO15693 Tags. New ST25Dx module added<span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Interrupt handling changed and further protection added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">RFAL feature switches have been modified and features are now disabled if omitted <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">ST25R3916 AAT (Automatic Antenna Tunning) module added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">RFAL NFC Higher layer added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several driver improvements <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.0.4 / 06-Fev-2019</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with ST25R3916 DISCO v1.0.0 / EMVCo v1.2.0<o:p></o:p></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Minor improvements on NFC-F module <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several improvements on NFC-V module including support for ST proprietary features<span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed issue with Delta RWT calculation <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed incorrect usage of NFCB dTbPoll / DdFWT <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added compile switch for Listen Mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Low power Listen Mode support added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Listen Mode aligned to NFC Forum Digital 2.1 <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added handling for EMVCo 3.0 static FDTListen <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Introduced SW Tag Detection <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.0.2 / 31-Oct-2018</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with ST25R3916 DISCO v0.9.4 (binary only)<o:p></o:p></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">New T4T module added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added support for T3T Check and Update commands <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Improved NFC-V module and added Write Multiple Blocks support <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">New rfalWorker protection added for improved control in multi-thread environments <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added support for user defined Analog Config tables <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several driver improvements and protections added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V2.0.0 / 28-Aug-2018</span></h3>
- <!-- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with STM8-NFC05A1 <o:p></o:p></span></u></b></p> -->
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">MISRA C 2012 compliant <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">ST25R3916 support added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">ST25R95 support added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fix unwanted Field Detector disable when entering Wake-up mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended Analog Config to have specific events <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed NFC-DEP potential issue if DID used <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended NFC-V commands <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">T2T module added <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Improved initial Listen mode handling <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended Wake-Up mode to support Capacitive measurement <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
-
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.3.6 / 08-May-2018</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with ST25R3911B DISCO v1.2.0<o:p></o:p></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added ISO15693 x4 and x8 mode support <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added S(PARAMETERS) support <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Interface changes for measurement, Wake-Up and DPO methods <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added further feature switches to enable/disable individual modules <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Changed communication protection <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Improved NFC-A anti-collision <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several driver improvements <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.3.4 / 07-May-2018</span></h3>
- <!--<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with <o:p></o:p></span></u></b></p>-->
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed NFC-V Read operation in addressed mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.3.2 / 31-January-2018</span></h3>
- <!--<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with <o:p></o:p></span></u></b></p>-->
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Modified Wake-Up mode interface <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed SFGI calculation in ISO-DEP <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.3.0 / 22-January-2018</span></h3>
- <!--<p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with <o:p></o:p></span></u></b></p>-->
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Introduced a new IRQ status handling to read the registers only once <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several changes for supporting Linux platform <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">SPI Select/Deselect moved to platform.h <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Aditional protection of the IRQ status reading, new macros available: platformProtectST25R391xIrqStatus / platformUnprotectST25R391xIrqStatus<span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Renamed the IRQ Enable/Disable macros to platformProtectST25R391xComm / platformUnprotectST25R391xComm <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Renamed SPI pins from chip specific to ST25R391X <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Introduced a new option ST25R391X_COM_SINGLETXRX which executes SPI in one single exchange (additional buffer required) <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Updated and added errata handlings to latest ST25R3911 Errata version <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed inconsitency on Analog settings for NFC-V <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed issue on NFC-V 1of256 decoding <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Changed the default NFC-A FDT Listen to be more strict <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added Wake-Up mode support <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added RFAL version definition <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <br>
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.2.0 / 17-August-2017</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with ST25R3911B Disco v1.1.16<o:p></o:p></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Aligned Technology modules to NFC Activity v1.1 and EMVCo v2.6 <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended NFC-B Collision Resolution allowing user define Slots <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added feature switches to enable/disable individual modules <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">ISO-DEP Interface changes allowing more user configurations and further EMVCo alignment <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Changed ST25TB detection to always perform Anti Collision loop regardeless of the result of the Poll<span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Fixed FIFO WL handling <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Modified FDT Poll handling <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">changed rfalCalibrate() to not overwrite dynamic configs <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added adjustment for TR1PUTMIN <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <span style="font-size: 10pt; font-family: Verdana;"></span>
- <br>
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.1.0 / 30-June-2017</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with ST25R3911B Disco v1.1.12<o:p></o:p></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">EMD supression enabled for ST25R3911B<span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <span style="font-size: 10pt; font-family: Verdana;"></span>
- <br>
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V1.0.0 / 16-May-2017</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with X-NUCLEO-NFC05A1 v1.0.0<o:p></o:p></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <ul style="margin-top: 0cm;" type="square">
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Added support for B', CTS and PicoPass/iClass mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Several impromvements for NFC-V mode <span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Improved error detection during NFC-B collision resolution<span style="font-weight: bold; font-style: italic;"></span></span></li>
- <li class="MsoNormal"><span style="font-size: 10pt; font-family: Verdana;">Extended T1T module <span style="font-weight: bold; font-style: italic;"></span></span></li>
- </ul>
- <span style="font-size: 10pt; font-family: Verdana;"></span>
- <br>
- <h3 style="background:#3CB4E6 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-right: 500pt; width: 186px;"><span style="font-size: 10pt; font-family: Arial; color: white;">V0.9.0 / 02-March-2017</span></h3>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Provided with ST25R3911B Discovery Kit on Embedded World Conference (binary only)<o:p></o:p></span></u></b></p>
- <p class="MsoNormal" style="margin: 4.5pt 0cm 4.5pt 18pt;"><b style=""><u><span style="font-size: 10pt; font-family: Verdana; color: black;">Main Changes<o:p></o:p></span></u></b></p>
- <span style="font-size: 10pt; font-family: Verdana;"></span>
- <br>
-
-</td>
-</tr>
-</tbody>
-</table>
-<p class="MsoNormal"><span style="font-size: 10pt;"><o:p></o:p></span></p>
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-<p class="MsoNormal"><o:p> </o:p></p>
-</div>
-</body></html>
diff --git a/core/embed/io/nfc/rfal/doc/ST25R3916_CERTComplianceReport.html b/core/embed/io/nfc/rfal/doc/ST25R3916_CERTComplianceReport.html
deleted file mode 100644
index a6dd5d01..00000000
--- a/core/embed/io/nfc/rfal/doc/ST25R3916_CERTComplianceReport.html
+++ /dev/null
@@ -1,11197 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<style type="text/css">
-
-html {
- height:100%; /* fix height to 100% for IE */
- width: 100%;
- max-height:100%; /* fix height for other browsers */
- padding:0; /*remove padding */
- margin:0; /* remove margins */
- border:0; /* remove borders */
-}
-
-.ptitle h2 {
- text-align: center
-}
-
-.stitle {
- font-size: 100%;
- font-weight: bold;
- text-align: left;
-}
-
-.headcontent {
- font-size: 90%;
- max-height: 200px;
-}
-
-.toc {
- display: inline-block;
-}
-
-.summary {
- margin:0;
- padding:0;
- background:transparent;
- height:100%;
- margin-right:100px;
- padding-right:100px;
- padding-top:10px;
- display: inline-block;
- float:right;
-}
-
-.toc ol {
- margin:0;
- padding:0;
- background:transparent;
- height:100%;
- margin-left:50px;
- padding-left:10px;
- padding-top:10px;
-}
-
-.toc ol li a { padding-left:20px; color: #0000EE;; text-decoration:none;}
-.toc ol li a:hover { color:#BABABA; }
-a:hover { color:#BABABA; }
-.diagrams { display: inline-block;}
-
-.rgtable td { width:70px; text-align:center;}
-
-
-td {
- font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace;
-}
-
-.pie-container {
-box-sizing: border-box;
-width: 850px;
-height: 450px;
-padding: 20px 15px 15px 15px;
-margin: 15px auto 30px auto;
-border: 1px solid #ddd;
-background: #fff;
-background: linear-gradient(#f6f6f6 0, #fff 50px);
-background: -o-linear-gradient(#f6f6f6 0, #fff 50px);
-background: -ms-linear-gradient(#f6f6f6 0, #fff 50px);
-background: -moz-linear-gradient(#f6f6f6 0, #fff 50px);
-background: -webkit-linear-gradient(#f6f6f6 0, #fff 50px);
-box-shadow: 0 3px 10px rgba(0,0,0,0.15);
--o-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
--ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
--moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
--webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1);
-}
-
-.pie-placeholder {
-width: 100%;
-height: 100%;
-font-size: 14px;
-line-height: 1.2em;
-}
-
-.metricstable,table,td,th
-{
-border-style: none;
-border-color: white;
-border-collapse: collapse;
-border-width: 1px;
-padding: 0px;
-}
-
-.padded { padding: 0 10px; }
-
-.paddedleft { padding: 0 10px; text-align: left; }
-.paddedright { padding: 0 10px; text-align: right; }
-
-.lightheader { background-color: lightgreen; }
-.boldheader { background-color: lime; }
-
-.docTable,table,th
-{
-border-style: solid;
-border-color: black;
-border-width: 1px;
-background: lightgray;
-}
-.docTable,table,td
-{
-border-style: solid;
-border-color: black;
-border-width: 1px;
-background: white;
-}
-.docCellGreen
-{
-border-style: solid;
-border-color: black;
-border-width: 1px;
-background: green;
-}
-.docCellRed
-{
-border-style: solid;
-border-color: black;
-border-width: 1px;
-background: red;
-}
-.docCellOrange
-{
-border-style: solid;
-border-color: black;
-border-width: 1px;
-background: orange;
-}
-.docCellBlue
-{
-border-style: solid;
-border-color: black;
-border-width: 1px;
-background: DeepSkyBlue;
-}
-</style>
-<title>Helix QAC GEP/GCS/GRP Report</title>
-</head>
-<body>
- <div id="head">
- <div class="ptitle"><h2>Helix QAC GEP/GCS/GRP Report for CERTCCM</h2></div>
- <div class="stitle"><h4><i>Note: This report is generated using Helix QAC version: 2024.1, property of Programming Research Limited, a Perforce company.</i></h4></div>
- <div class="stitle">Project : nucleo/Firmware/nucleo/PRQA/RFAL-ST25R3916<br/>Status at: 04 Apr, 2025 at 14:40:42<br/><i>Report script last update: August 2, 2024</i></div>
- <div class="headcontent">
- <div class="toc">
- <ol>
- <li><a href="#GEP">GEP - Guideline Enforcement Plan</a></li>
- <ol>
- <li><a href="#Tools">Tools version</a></li>
- <li><a href="#Configuration">Configuration files</a></li>
- <li><a href="#Assistance">Assistance/Enforcement</a></li>
- </ol>
- <li><a href="#GRP">GRP - Guideline Recategorization Plan</a></li>
- <li><a href="#GCS">GCS - Guideline Compliance Summary</a></li>
- <li><a href="#Permits">Deviation Permits</a></li>
- <li><a href="#Records">Deviation Records</a></li>
- <ol>
- <li><a href="#SuppressionsByFile">Suppressions by File</a></li>
- <li><a href="#SuppressionsByGroup">Suppressions by Group</a></li>
- <li><a href="#RedundantSuppressions">Redundant Suppressions</a></li>
- <li><a href="#ContinuousSuppressionsByFile">Continuous Suppressions by File</a></li>
- <li><a href="#FileStatus">File Status</a></li>
- </ol>
- </ol>
- </div>
- </div>
- </div>
-
-<br>
-<br>
-<br>
-<div id="content">
-<div class="GEP">
-<div class="sec"><h2><a name="GEP">GEP - Guideline Enforcement Plan</a></h2></div>
-This report documents the coverage of CERT conformance. Its notation is derived from MISRA, please refer for details of the following reports (GEP, GRP, GCS, etc.) to this standard.<br>
-This section targets to provide an overview of Guidelines Enforcement Plan (GEP).<br>
-This document will only focus on STMicroelectronics NFC RF Abstraction Layer (RFAL).<br>
-The project has been designed to comply with the standard ISO/IEC 9899:1999 ([C99]).
-<br>
-<br>
-<h3><a name="Tools">1. Tools version</a></h3>
-<center><table class="docTable" width=98%>
- <colgroup span="10" class="columns"></colgroup>
- <tr><th>Component</th><th>Version</th><th>Target</th><th>Options</th></tr>
- <td>qac</td>
- <td>11.5.0</td>
- <td>C</td>
- <td><ul>-d : __schedule_barrier=_ignore_semi</ul>
-<ul>-namelength : 63</ul>
-<ul>-prodoption : df::function_timeout=20000</ul>
-<ul>-remark : No Preset Selected</ul>
-</td>
- </tr>
- <td>dataflow</td>
- <td>1.5.0</td>
- <td>C_CPP</td>
- <td><ul>-remark : No Preset Selected</ul>
-</td>
- </tr>
- <td>rcma</td>
- <td>4.5.0</td>
- <td>C_CPP</td>
- <td></td>
- </tr>
- <td>certccm</td>
- <td>3.5.0</td>
- <td>C</td>
- <td></td>
- </tr>
-</table></center>
-<h3><a name="Configuration">2. Configuration</a></h3>
-This section targets to provide the main configuration options used for CERT compliance.<br>
-The project complies to [C99],<br>
-the variables length has been consequently set to a dedicated value (cf 'namelength' option in table above).
-<br>
-<br>
-<b>Repository/components:</b><br>
- <ul>
- <li>MCU target:</li>
- <ul>RFAL-ST25R3916</ul><br>
- <li>RFAL informations:</li>
- <ul>Path: rfal</ul>
- <ul>Version: v4.0.2</ul>
- <br> <li>Project repositories SHA1:</li>
- <ul><b>common</b>: 9658154</ul>
- <ul><b>nucleo</b>: d85b3e3</ul>
- <ul><b>rfal</b>: 645759e</ul>
- <br>
- </ul>
-<h3><a name="Assistance">3. Assistance/Enforcement</a></h3>
-<center><table class="docTable" width=98%>
- <colgroup span="10" class="columns"></colgroup>
- <tr><th>Guideline</th><th>Category</th><th>Description</th><th>Assistance/Enforcement Sub Rules</th></tr>
- <tr>
- <td width=2%>ARR02</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Explicitly specify array bounds, even if implicitly defined by an initializer</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0678</td>
- <td width=88%>[u] Array element is array of unknown size. Arrays cannot be constructed from incomplete types.</td>
- </tr>
- <tr>
- <td width=12%>qac-0688</td>
- <td width=88%>Array size determined by number of initializers which include concatenated string literals.</td>
- </tr>
- <tr>
- <td width=12%>qac-3674</td>
- <td width=88%>Array size defined implicitly by the number of initializers.</td>
- </tr>
- <tr>
- <td width=12%>qac-3684</td>
- <td width=88%>Array declared with unknown size.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ARR30</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not form or use out-of-bounds pointers or array subscripts</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2820</td>
- <td width=88%>Constant: Arithmetic operation on NULL pointer.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2821</td>
- <td width=88%>Definite: Arithmetic operation on NULL pointer.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2822</td>
- <td width=88%>Apparent: Arithmetic operation on NULL pointer.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2823</td>
- <td width=88%>Suspicious: Arithmetic operation on NULL pointer.</td>
- </tr>
- <tr>
- <td width=12%>qac-2840</td>
- <td width=88%>Constant: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2841</td>
- <td width=88%>Definite: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2842</td>
- <td width=88%>Apparent: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2843</td>
- <td width=88%>Suspicious: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2930</td>
- <td width=88%>Constant: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2931</td>
- <td width=88%>Definite: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2932</td>
- <td width=88%>Apparent: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2933</td>
- <td width=88%>Suspicious: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2935</td>
- <td width=88%>Constant: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2936</td>
- <td width=88%>Definite: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2937</td>
- <td width=88%>Apparent: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2938</td>
- <td width=88%>Suspicious: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2950</td>
- <td width=88%>Constant: Negative value used in array subscript or pointer arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2951</td>
- <td width=88%>Definite: Negative value used in array subscript or pointer arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2952</td>
- <td width=88%>Apparent: Negative value used in array subscript or pointer arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2953</td>
- <td width=88%>Suspicious: Negative value used in array subscript or pointer arithmetic operation.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ARR32</td>
- <td width=2%>Rule</td>
- <td width=40%>Ensure size arguments for variable length arrays are in a valid range</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1051</td>
- <td width=88%>[C99] A variable length array has been declared.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ARR36</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not subtract or compare two pointers that do not refer to the same array</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0487</td>
- <td width=88%>[C] If two pointers are subtracted, they must be pointers that address compatible types.</td>
- </tr>
- <tr>
- <td width=12%>qac-0513</td>
- <td width=88%>[C] Relational operator used to compare pointers to incompatible types.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2668</td>
- <td width=88%>Subtraction of a pointer to an array and a pointer to a non-array.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2669</td>
- <td width=88%>Comparison of a pointer to an array and a pointer to a non-array.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2761</td>
- <td width=88%>Definite: Subtracting pointers that address different objects.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2762</td>
- <td width=88%>Apparent: Subtracting pointers that address different objects.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2763</td>
- <td width=88%>Suspicious: Subtracting pointers that address different objects.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2766</td>
- <td width=88%>Definite: Subtracting pointers that address different members of the same object.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2767</td>
- <td width=88%>Apparent: Subtracting pointers that address different members of the same object.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2768</td>
- <td width=88%>Suspicious: Subtracting pointers that address different members of the same object.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2771</td>
- <td width=88%>Definite: Comparing pointers that address different objects.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2772</td>
- <td width=88%>Apparent: Comparing pointers that address different objects.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2773</td>
- <td width=88%>Suspicious: Comparing pointers that address different objects.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ARR37</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not add or subtract an integer to a pointer to a non-array object</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2930</td>
- <td width=88%>Constant: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2931</td>
- <td width=88%>Definite: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2932</td>
- <td width=88%>Apparent: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2933</td>
- <td width=88%>Suspicious: Computing an invalid pointer value.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ARR38</td>
- <td width=2%>Rule</td>
- <td width=40%>Guarantee that library functions do not form invalid pointers</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2840</td>
- <td width=88%>Constant: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2841</td>
- <td width=88%>Definite: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2842</td>
- <td width=88%>Apparent: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2843</td>
- <td width=88%>Suspicious: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2845</td>
- <td width=88%>Constant: Maximum number of characters to be read/written is larger than the target buffer size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2846</td>
- <td width=88%>Definite: Maximum number of characters to be read/written is larger than the target buffer size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2847</td>
- <td width=88%>Apparent: Maximum number of characters to be read/written is larger than the target buffer size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2848</td>
- <td width=88%>Suspicious: Maximum number of characters to be read/written is larger than the target buffer size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2935</td>
- <td width=88%>Constant: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2936</td>
- <td width=88%>Definite: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2937</td>
- <td width=88%>Apparent: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2938</td>
- <td width=88%>Suspicious: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4880</td>
- <td width=88%>Constant: Pointed to object has smaller size than the size_t argument.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4881</td>
- <td width=88%>Definite: Pointed to object has smaller size than the size_t argument.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4882</td>
- <td width=88%>Apparent: Pointed to object has smaller size than the size_t argument.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4883</td>
- <td width=88%>Suspicious: Pointed to object has smaller size than the size_t argument.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ARR39</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not add or subtract a scaled integer to a pointer</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4955</td>
- <td width=88%>Constant: Adding/subtracting a scaled integer to a pointer.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4956</td>
- <td width=88%>Definite: Adding/subtracting a scaled integer to a pointer.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4957</td>
- <td width=88%>Apparent: Adding/subtracting a scaled integer to a pointer.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON30</td>
- <td width=2%>Rule</td>
- <td width=40%>Clean up thread-specific storage</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>mta-1780</td>
- <td width=88%>Memory associated with the TLS key '%1s' is deallocated more than once.</td>
- </tr>
- <tr>
- <td width=12%>mta-1781</td>
- <td width=88%>Memory associated with the TLS key '%1s' may be deallocated more than once.</td>
- </tr>
- <tr>
- <td width=12%>mta-1782</td>
- <td width=88%>Memory associated with the TLS key '%1s' is deallocated in a way that does not match its allocation.</td>
- </tr>
- <tr>
- <td width=12%>mta-1783</td>
- <td width=88%>Memory associated with the TLS key '%1s' is not deallocated.</td>
- </tr>
- <tr>
- <td width=12%>mta-1784</td>
- <td width=88%>The origin of the TLS key '%1s' cannot be identified. Perhaps it should have been passed as a thread parameter?</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON31</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not destroy a mutex while it is locked</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4961</td>
- <td width=88%>Definite: Attempt to destroy a mutex which is still locked</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4962</td>
- <td width=88%>Apparent: Attempt to destroy a mutex which is still locked</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON32</td>
- <td width=2%>Rule</td>
- <td width=40%>Prevent data races when accessing bit-fields from multiple threads</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>mta-1774</td>
- <td width=88%>Definite: data race for an object '%1s' which shares its physical storage location with one or more others.</td>
- </tr>
- <tr>
- <td width=12%>mta-1775</td>
- <td width=88%>Apparent: data race for an object '%1s' which shares its physical storage location with one or more others.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON33</td>
- <td width=2%>Rule</td>
- <td width=40%>Avoid race conditions when using library functions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4976</td>
- <td width=88%>Definite: Call to a non-reentrant function outside of a critical section.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4977</td>
- <td width=88%>Apparent: Call to a non-reentrant function outside of a critical section.</td>
- </tr>
- <tr>
- <td width=12%>certccm-5037</td>
- <td width=88%>Use of '%1s'.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON34</td>
- <td width=2%>Rule</td>
- <td width=40%>Declare objects shared between threads with appropriate storage durations</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4926</td>
- <td width=88%>Definite: The lifetime of the variable passed to the thread creation function is shorter than the lifetime of the thread.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4927</td>
- <td width=88%>Apparent: The lifetime of the variable passed to the thread creation function is shorter than the lifetime of the thread.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4928</td>
- <td width=88%>Suspicious: The lifetime of the variable passed to the thread creation function is shorter than the lifetime of the thread.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON35</td>
- <td width=2%>Rule</td>
- <td width=40%>Avoid deadlock by locking in a predefined order</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>mta-1772</td>
- <td width=88%>Mutex '%1s' violates the lock hierarchy, as it is acquired before '%2s' elsewhere %3s% of the time.</td>
- </tr>
- <tr>
- <td width=12%>mta-1773</td>
- <td width=88%>Mutexes '%1s' and '%2s' are not ordered in the lock hierarchy.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON36</td>
- <td width=2%>Rule</td>
- <td width=40%>Wrap functions that can spuriously wake up in a loop</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2027</td>
- <td width=88%>This function can wake spuriously, but does not appear to be wrapped in a loop.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON37</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not call signal() in a multithreaded program</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5021</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON38</td>
- <td width=2%>Rule</td>
- <td width=40%>Preserve thread safety and liveness when using condition variables</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>mta-1778</td>
- <td width=88%>Condition variable '%1s' is signaled and used with multiple wait operations.</td>
- </tr>
- <tr>
- <td width=12%>mta-1779</td>
- <td width=88%>Condition variable '%1s' is signaled and used with a re-entered wait operation.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON39</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not join or detach a thread that was previously joined or detached</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>mta-1776</td>
- <td width=88%>Thread '%1s' is made unjoinable multiple times.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON40</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not refer to an atomic variable twice in an expression</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1114</td>
- <td width=88%>This atomic variable is referenced directly twice in the same expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-1115</td>
- <td width=88%>This atomic lvalue appears to be referenced twice in the same expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-1116</td>
- <td width=88%>This atomic variable appears to be updated non-atomically.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON41</td>
- <td width=2%>Rule</td>
- <td width=40%>Wrap functions that can fail spuriously in a loop</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2026</td>
- <td width=88%>This function can fail spuriously, but does not appear to be wrapped in a loop.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>CON43</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not allow data races in multithreaded code</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>mta-1765</td>
- <td width=88%>Definite: data race for object '%1s'.</td>
- </tr>
- <tr>
- <td width=12%>mta-1766</td>
- <td width=88%>Apparent: data race for object '%1s'.</td>
- </tr>
- <tr>
- <td width=12%>mta-1770</td>
- <td width=88%>Definite: data race for a volatile object '%1s'.</td>
- </tr>
- <tr>
- <td width=12%>mta-1771</td>
- <td width=88%>Definite: data race for a mutable object '%1s'.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL00</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Const-qualify immutable objects</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3204</td>
- <td width=88%>The variable '%1s' is only set once and so it could be declared with the 'const' qualifier.</td>
- </tr>
- <tr>
- <td width=12%>qac-3227</td>
- <td width=88%>The parameter '%1s' is never modified and so it could be declared with the 'const' qualifier.</td>
- </tr>
- <tr>
- <td width=12%>qac-3232</td>
- <td width=88%>File scope static, '%1s', is never modified. It could be declared const.</td>
- </tr>
- <tr>
- <td width=12%>qac-3673</td>
- <td width=88%>The object addressed by the pointer parameter '%1s' is not modified and so the pointer could be of type 'pointer to const'.</td>
- </tr>
- <tr>
- <td width=12%>qac-3677</td>
- <td width=88%>The elements of the array parameter '%1s' are not modified and so they could be qualified as 'const'.</td>
- </tr>
- <tr>
- <td width=12%>qac-3694</td>
- <td width=88%>The elements of the multidimensional array parameter '%1s' are not modified and so they could be qualified as 'const'.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL01</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not reuse variable names in subscopes</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0795</td>
- <td width=88%>Identifier matches other identifier(s) (e.g. '%1s') in an outer scope within the specified number of significant characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0796</td>
- <td width=88%>Identifier matches other identifier(s) (e.g. '%1s') in an outer scope within the ISO:C99 limit of 63 significant characters</td>
- </tr>
- <tr>
- <td width=12%>qac-2547</td>
- <td width=88%>This declaration of tag '%s' hides a more global declaration.</td>
- </tr>
- <tr>
- <td width=12%>qac-3334</td>
- <td width=88%>This declaration of '%1s' hides a more global declaration.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL05</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Use typedefs of non-pointer types only</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5004</td>
- <td width=88%>This typedef is applied to a pointer type.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL06</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Use meaningful symbolic constants to represent literal values</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3120</td>
- <td width=88%>Hard-coded 'magic' integer constant, '%1s'.</td>
- </tr>
- <tr>
- <td width=12%>qac-3121</td>
- <td width=88%>Hard-coded 'magic' floating constant, '%1s'.</td>
- </tr>
- <tr>
- <td width=12%>qac-3122</td>
- <td width=88%>Hard-coded 'magic' string literal, %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-3123</td>
- <td width=88%>Hard coded 'magic' character constant, %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-3131</td>
- <td width=88%>Hard coded 'magic' number, '%1s', used to define the size of a bit-field.</td>
- </tr>
- <tr>
- <td width=12%>qac-3132</td>
- <td width=88%>Hard coded 'magic' number, '%1s', used to define the size of an array.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL07</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Include the appropriate type information in function declarators</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1304</td>
- <td width=88%>Old style definition of function '%1s()' is not portable to C++.</td>
- </tr>
- <tr>
- <td width=12%>qac-2050</td>
- <td width=88%>The 'int' type specifier has been omitted from a function declaration.</td>
- </tr>
- <tr>
- <td width=12%>qac-3331</td>
- <td width=88%>The definition for identifier '%s' with external linkage conflicts with a previous declaration in the same scope.</td>
- </tr>
- <tr>
- <td width=12%>qac-3335</td>
- <td width=88%>No function declaration. Implicit declaration inserted: 'extern int %1s();'.</td>
- </tr>
- <tr>
- <td width=12%>qac-3408</td>
- <td width=88%>'%1s' has external linkage and is being defined without any previous declaration.</td>
- </tr>
- <tr>
- <td width=12%>qac-3450</td>
- <td width=88%>Function '%s', with internal linkage, is being defined without a previous declaration.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL10</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Maintain the contract between the writer and caller of variadic functions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0184</td>
- <td width=88%>[U] Insufficient arguments to satisfy conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0185</td>
- <td width=88%>[U] Call contains more arguments than conversion specifiers.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL11</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Understand the type issues associated with variadic functions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0179</td>
- <td width=88%>[U] Argument type does not match conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0184</td>
- <td width=88%>[U] Insufficient arguments to satisfy conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0185</td>
- <td width=88%>[U] Call contains more arguments than conversion specifiers.</td>
- </tr>
- <tr>
- <td width=12%>qac-0186</td>
- <td width=88%>[U] A call to this function must include at least one argument.</td>
- </tr>
- <tr>
- <td width=12%>qac-0190</td>
- <td width=88%>[U] Using unsupported conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0191</td>
- <td width=88%>[U] Unknown length modifier used with 'd/i/n' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0192</td>
- <td width=88%>[U] Unknown length modifier used with 'o' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0193</td>
- <td width=88%>[U] Unknown length modifier used with 'u' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0194</td>
- <td width=88%>[U] Unknown length modifier used with 'x/X' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0195</td>
- <td width=88%>[U] Unknown length modifier used with 'e/E/f/F/g/G' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0196</td>
- <td width=88%>[U] Unknown length modifier used with 's' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0197</td>
- <td width=88%>[U] Unknown length modifier used with 'p' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0198</td>
- <td width=88%>[U] Unknown length modifier used with '%%' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0199</td>
- <td width=88%>[U] Unknown length modifier used with '[' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0200</td>
- <td width=88%>[U] Unknown length modifier used with 'c' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0201</td>
- <td width=88%>[U] Incomplete conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0206</td>
- <td width=88%>[U] Argument type does not match conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0207</td>
- <td width=88%>[U] 'scanf' expects address of objects being stored into.</td>
- </tr>
- <tr>
- <td width=12%>qac-0208</td>
- <td width=88%>[U] Same character occurs in scanset more than once.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL13</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Declare function parameters that are pointers to values not changed by the function as const</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0431</td>
- <td width=88%>[C] Function argument points to a more heavily qualified type.</td>
- </tr>
- <tr>
- <td width=12%>qac-3673</td>
- <td width=88%>The object addressed by the pointer parameter '%1s' is not modified and so the pointer could be of type 'pointer to const'.</td>
- </tr>
- <tr>
- <td width=12%>qac-3677</td>
- <td width=88%>The elements of the array parameter '%1s' are not modified and so they could be qualified as 'const'.</td>
- </tr>
- <tr>
- <td width=12%>qac-3694</td>
- <td width=88%>The elements of the multidimensional array parameter '%1s' are not modified and so they could be qualified as 'const'.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL15</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Declare file-scope objects or functions that do not need external linkage as static</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>rcma-1504</td>
- <td width=88%>The object '%1s' is only referenced in the translation unit where it is defined.</td>
- </tr>
- <tr>
- <td width=12%>rcma-1531</td>
- <td width=88%>The object '%1s' is referenced in only one translation unit - but not the one in which it is defined.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL16</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Use 'L', not 'l', to indicate a long value</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1280</td>
- <td width=88%>A lowercase letter L (l) has been used in an integer or floating suffix.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL18</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not begin integer constants with 0 when specifying a decimal value</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0339</td>
- <td width=88%>Octal constant used.</td>
- </tr>
- <tr>
- <td width=12%>qac-1272</td>
- <td width=88%>Redundant leading zeroes on a numeric constant.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL19</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Minimize the scope of variables and functions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>rcma-1504</td>
- <td width=88%>The object '%1s' is only referenced in the translation unit where it is defined.</td>
- </tr>
- <tr>
- <td width=12%>rcma-1505</td>
- <td width=88%>The function '%1s' is only referenced in the translation unit where it is defined.</td>
- </tr>
- <tr>
- <td width=12%>rcma-1531</td>
- <td width=88%>The object '%1s' is referenced in only one translation unit - but not the one in which it is defined.</td>
- </tr>
- <tr>
- <td width=12%>rcma-1532</td>
- <td width=88%>The function '%1s' is only referenced in one translation unit - but not the one in which it is defined.</td>
- </tr>
- <tr>
- <td width=12%>qac-3210</td>
- <td width=88%>The global identifier '%1s' is declared here but is not used in this translation unit.</td>
- </tr>
- <tr>
- <td width=12%>qac-3218</td>
- <td width=88%>File scope static, '%1s', is only accessed in one function.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL20</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Explicitly specify void when a function accepts no arguments</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3001</td>
- <td width=88%>Function has been declared with an empty parameter list.</td>
- </tr>
- <tr>
- <td width=12%>qac-3007</td>
- <td width=88%>"void" has been omitted when defining a function with no parameters.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL21</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Understand the storage of compound literals</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1054</td>
- <td width=88%>[C99] A compound literal has been used.</td>
- </tr>
- <tr>
- <td width=12%>qac-3217</td>
- <td width=88%>Address of automatic object exported to a pointer with linkage or wider scope.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL23</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Guarantee that mutually visible identifiers are unique</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0627</td>
- <td width=88%>[C] '%s' has different type to previous declaration in the same scope.</td>
- </tr>
- <tr>
- <td width=12%>qac-0776</td>
- <td width=88%>[L] External identifier matches other external identifier(s) (e.g. '%1s') in first 6 characters - program does not conform strictly to ISO:C90.</td>
- </tr>
- <tr>
- <td width=12%>qac-0777</td>
- <td width=88%>[U] External identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0778</td>
- <td width=88%>[L] Identifier matches other identifier(s) (e.g. '%1s') in first 31 characters - program does not conform strictly to ISO:C90.</td>
- </tr>
- <tr>
- <td width=12%>qac-0779</td>
- <td width=88%>[U] Identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0789</td>
- <td width=88%>[L] Identifier matches other identifier(s) (e.g. '%1s') in first 63 characters - program does not conform strictly to ISO:C99.</td>
- </tr>
- <tr>
- <td width=12%>qac-0791</td>
- <td width=88%>[U] Macro identifier does not differ from other macro identifier(s) (e.g. '%1s') within the specified number of significant characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0793</td>
- <td width=88%>[L] Macro identifier matches other macro identifier(s) (e.g. '%1s') in first 63 characters - program does not conform strictly to ISO:C99.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL30</td>
- <td width=2%>Rule</td>
- <td width=40%>Declare objects with appropriate storage durations</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3217</td>
- <td width=88%>Address of automatic object exported to a pointer with linkage or wider scope.</td>
- </tr>
- <tr>
- <td width=12%>qac-3225</td>
- <td width=88%>Address of automatic object exported using a function parameter.</td>
- </tr>
- <tr>
- <td width=12%>qac-3230</td>
- <td width=88%>Address of automatic object assigned to local pointer with static storage duration.</td>
- </tr>
- <tr>
- <td width=12%>qac-4140</td>
- <td width=88%>Address of automatic object exported in function return value.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL31</td>
- <td width=2%>Rule</td>
- <td width=40%>Declare identifiers before using them</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0434</td>
- <td width=88%>[S] The identifier '%s' has not been declared.</td>
- </tr>
- <tr>
- <td width=12%>qac-2050</td>
- <td width=88%>The 'int' type specifier has been omitted from a function declaration.</td>
- </tr>
- <tr>
- <td width=12%>qac-2051</td>
- <td width=88%>The 'int' type specifier has been omitted from an object declaration.</td>
- </tr>
- <tr>
- <td width=12%>qac-3335</td>
- <td width=88%>No function declaration. Implicit declaration inserted: 'extern int %1s();'.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL36</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not declare an identifier with conflicting linkage classifications</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0625</td>
- <td width=88%>[U] '%s' has been declared with both internal and external linkage - the behaviour is undefined.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL37</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not declare or define a reserved identifier</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0602</td>
- <td width=88%>[U] The identifier '%1s' is reserved for use by the library.</td>
- </tr>
- <tr>
- <td width=12%>qac-0603</td>
- <td width=88%>[U] The macro identifier '%1s' is reserved.</td>
- </tr>
- <tr>
- <td width=12%>qac-4600</td>
- <td width=88%>The macro '%1s' is also defined in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4601</td>
- <td width=88%>The macro '%1s' is the name of an identifier in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4602</td>
- <td width=88%>The identifier '%1s' is declared as a macro in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4603</td>
- <td width=88%>The object/function '%1s'is being defined with the same name as an ordinary identifier defined in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4604</td>
- <td width=88%>The object/function '%1s' is being declared with the same name as an ordinary identifier defined in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4605</td>
- <td width=88%>The typedef '%1s' is also defined in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4606</td>
- <td width=88%>The typedef '%1s' has the same name as another ordinary identifier in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4607</td>
- <td width=88%>The enum constant '%1s' has the same name as another ordinary identifier in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4608</td>
- <td width=88%>The tag '%1s' is also defined in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4620</td>
- <td width=88%>The macro '%1s' may also be defined as a macro in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4621</td>
- <td width=88%>The macro '%1s' may also be defined as a typedef in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4622</td>
- <td width=88%>The identifier '%1s' may be defined as a macro in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4623</td>
- <td width=88%>The typedef '%1s' may also be defined in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4624</td>
- <td width=88%>The ordinary identifier '%1s' may be defined as a typedef in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4640</td>
- <td width=88%>The macro '%1s' could conflict in the future with the name of a macro in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4641</td>
- <td width=88%>The identifier '%1s' could conflict in the future with the name of a macro in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4642</td>
- <td width=88%>The macro '%1s' could conflict in the future with the name of a function in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4643</td>
- <td width=88%>The identifier '%1s' could conflict in the future with the name of a function in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4644</td>
- <td width=88%>The macro '%1s' could conflict in the future with the name of a typedef in '<%2s>'.</td>
- </tr>
- <tr>
- <td width=12%>qac-4645</td>
- <td width=88%>The identifier '%1s' could conflict in the future with the name of a typedef in '<%2s>'.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL38</td>
- <td width=2%>Rule</td>
- <td width=40%>Use the correct syntax when declaring a flexible array member</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1037</td>
- <td width=88%>[E] Arrays of length zero are a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1039</td>
- <td width=88%>[E] Treating array of length one as potentially flexible member.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL39</td>
- <td width=2%>Rule</td>
- <td width=40%>Avoid information leakage when passing a structure across a trust boundary</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4941</td>
- <td width=88%>Definite: Passing a padded structure from a trusted boundary to another domain.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4942</td>
- <td width=88%>Apparent: Passing a padded structure from a trusted boundary to another domain.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4943</td>
- <td width=88%>Suspicious: Passing a padded structure from a trusted boundary to another domain.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL40</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not create incompatible declarations of the same function or object</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0776</td>
- <td width=88%>[L] External identifier matches other external identifier(s) (e.g. '%1s') in first 6 characters - program does not conform strictly to ISO:C90.</td>
- </tr>
- <tr>
- <td width=12%>qac-0778</td>
- <td width=88%>[L] Identifier matches other identifier(s) (e.g. '%1s') in first 31 characters - program does not conform strictly to ISO:C90.</td>
- </tr>
- <tr>
- <td width=12%>qac-0779</td>
- <td width=88%>[U] Identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0789</td>
- <td width=88%>[L] Identifier matches other identifier(s) (e.g. '%1s') in first 63 characters - program does not conform strictly to ISO:C99.</td>
- </tr>
- <tr>
- <td width=12%>rcma-1510</td>
- <td width=88%>'%1s' has external linkage and has incompatible declarations.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>DCL41</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not declare variables inside a switch statement before the first case label</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2008</td>
- <td width=88%>Code statements precede the first label in this 'switch' construct.</td>
- </tr>
- <tr>
- <td width=12%>qac-2882</td>
- <td width=88%>This 'switch' statement will bypass the initialization of local variables.</td>
- </tr>
- <tr>
- <td width=12%>qac-3234</td>
- <td width=88%>Declarations precede the first label in this 'switch' construct.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ENV03</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Sanitize the environment when invoking external programs</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5017</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ENV30</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not modify the object referenced by the return value of certain functions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1492</td>
- <td width=88%>The result of library function '%1s' is used to modify the referenced object.</td>
- </tr>
- <tr>
- <td width=12%>qac-1493</td>
- <td width=88%>The result of library function '%1s' is used as a pointer to a modifiable object.</td>
- </tr>
- <tr>
- <td width=12%>qac-1494</td>
- <td width=88%>The result of library function '%1s' might be modified.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4751</td>
- <td width=88%>Definite: Modifying an object that is referenced by the return value of a library function.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4752</td>
- <td width=88%>Apparent: Modifying an object that is referenced by the return value of a library function.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4753</td>
- <td width=88%>Suspicious: Modifying an object that is referenced by the return value of a library function.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ENV31</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not rely on an environment pointer following an operation that may invalidate it</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4991</td>
- <td width=88%>Definite: Using an invalidated value '%s' of the environment pointer passed as the third argument to main.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4992</td>
- <td width=88%>Apparent: Using an invalidated value '%s' of the environment pointer passed as the third argument to main.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4993</td>
- <td width=88%>Suspicious: Using an invalidated value '%s' of the environment pointer passed as the third argument to main.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ENV32</td>
- <td width=2%>Rule</td>
- <td width=40%>All exit handlers must return normally</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4856</td>
- <td width=88%>Definite: Atexit handler does not return normally.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4857</td>
- <td width=88%>Apparent: Atexit handler does not return normally.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4858</td>
- <td width=88%>Suspicious: Atexit handler does not return normally.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ENV33</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not call system()</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5018</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ENV34</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not store pointers returned by certain functions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2681</td>
- <td width=88%>Definite: Using an invalidated value '%s' returned from a Standard Library function.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2682</td>
- <td width=88%>Apparent: Using an invalidated value '%s' returned from a Standard Library function.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2683</td>
- <td width=88%>Suspicious: Using an invalidated value '%s' returned from a Standard Library function.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ERR30</td>
- <td width=2%>Rule</td>
- <td width=40%>Set errno to zero before calling a library function known to set errno, and check errno only after the function returns a value indicating failure</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2500</td>
- <td width=88%>Call to '%1s' is not immediately preceded by the zero-ing of 'errno'.</td>
- </tr>
- <tr>
- <td width=12%>qac-2501</td>
- <td width=88%>Call to '%1s' is not immediately followed by the testing of 'errno'.</td>
- </tr>
- <tr>
- <td width=12%>qac-2502</td>
- <td width=88%>Zero-ing of 'errno' is not immediately followed by a call to an 'errno' setting function.</td>
- </tr>
- <tr>
- <td width=12%>qac-2503</td>
- <td width=88%>Testing of 'errno' is not immediately preceded by a call to an 'errno' setting function.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ERR32</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not rely on indeterminate values of errno</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2031</td>
- <td width=88%>Signal handler '%1s' accesses errno.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4781</td>
- <td width=88%>Definite: Signal handler causes the value of errno to be indeterminate.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4782</td>
- <td width=88%>Apparent: Signal handler causes the value of errno to be indeterminate.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4783</td>
- <td width=88%>Suspicious: Signal handler causes the value of errno to be indeterminate.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ERR33</td>
- <td width=2%>Rule</td>
- <td width=40%>Detect and handle standard library errors</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3200</td>
- <td width=88%>'%1s' returns a value which is not being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>ERR34</td>
- <td width=2%>Rule</td>
- <td width=40%>Detect errors when converting a string to a number</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5030</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP00</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Use parentheses for precedence of operation</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3389</td>
- <td width=88%>Extra parentheses recommended to clarify the ordering of a % operator and another arithmetic operator (* / % + -).</td>
- </tr>
- <tr>
- <td width=12%>qac-3390</td>
- <td width=88%>Expression is equivalent to: "%1s"</td>
- </tr>
- <tr>
- <td width=12%>qac-3391</td>
- <td width=88%>Extra parentheses recommended. A conditional operation is the operand of another conditional operator.</td>
- </tr>
- <tr>
- <td width=12%>qac-3392</td>
- <td width=88%>Extra parentheses recommended. A shift, relational or equality operation is the operand of a second identical operator.</td>
- </tr>
- <tr>
- <td width=12%>qac-3393</td>
- <td width=88%>Extra parentheses recommended. An arithmetic operation (* / + -) is the operand of a different operator with the same precedence.</td>
- </tr>
- <tr>
- <td width=12%>qac-3394</td>
- <td width=88%>Extra parentheses recommended. A shift, relational or equality operation is the operand of a different operator with the same precedence.</td>
- </tr>
- <tr>
- <td width=12%>qac-3395</td>
- <td width=88%>Extra parentheses recommended. A * or / operation is the operand of a + or - operator.</td>
- </tr>
- <tr>
- <td width=12%>qac-3396</td>
- <td width=88%>Extra parentheses recommended. A binary operation is the operand of a conditional operator.</td>
- </tr>
- <tr>
- <td width=12%>qac-3397</td>
- <td width=88%>Extra parentheses recommended. A binary operation is the operand of a binary operator with different precedence.</td>
- </tr>
- <tr>
- <td width=12%>qac-3398</td>
- <td width=88%>Extra parentheses recommended. A function call, array subscript, or member operation is the operand of a logical && or ||.</td>
- </tr>
- <tr>
- <td width=12%>qac-3399</td>
- <td width=88%>Extra parentheses recommended. A unary operation is the operand of a logical && or ||.</td>
- </tr>
- <tr>
- <td width=12%>qac-3400</td>
- <td width=88%>Extra parentheses recommended. A binary operation is the operand of a logical && or ||.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP02</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Be aware of the short-circuit behavior of the logical AND and OR operators</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3415</td>
- <td width=88%>Right hand operand of '&&' or '||' is an expression with persistent side effects.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP03</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not assume the size of a structure is the sum of the sizes of its members</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0697</td>
- <td width=88%>The size of the allocated memory block is not an integral multiple of the size of the object type addressed by the pointer cast.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP05</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not cast away a const qualification</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0311</td>
- <td width=88%>Dangerous pointer cast results in loss of const qualification.</td>
- </tr>
- <tr>
- <td width=12%>qac-0431</td>
- <td width=88%>[C] Function argument points to a more heavily qualified type.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP07</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not diminish the benefits of constants by assuming their values in expressions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3120</td>
- <td width=88%>Hard-coded 'magic' integer constant, '%1s'.</td>
- </tr>
- <tr>
- <td width=12%>qac-3121</td>
- <td width=88%>Hard-coded 'magic' floating constant, '%1s'.</td>
- </tr>
- <tr>
- <td width=12%>qac-3122</td>
- <td width=88%>Hard-coded 'magic' string literal, %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-3123</td>
- <td width=88%>Hard coded 'magic' character constant, %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-3131</td>
- <td width=88%>Hard coded 'magic' number, '%1s', used to define the size of a bit-field.</td>
- </tr>
- <tr>
- <td width=12%>qac-3132</td>
- <td width=88%>Hard coded 'magic' number, '%1s', used to define the size of an array.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP08</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Ensure pointer arithmetic is used correctly</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0488</td>
- <td width=88%>Performing pointer arithmetic.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2930</td>
- <td width=88%>Constant: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2931</td>
- <td width=88%>Definite: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2932</td>
- <td width=88%>Apparent: Computing an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2933</td>
- <td width=88%>Suspicious: Computing an invalid pointer value.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP10</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not depend on the order of evaluation of subexpressions or the order in which side effects take place</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0400</td>
- <td width=88%>[U] '%1s' is modified more than once between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0401</td>
- <td width=88%>[U] '%1s' may be modified more than once between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0402</td>
- <td width=88%>[U] '%1s' is modified and accessed between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0403</td>
- <td width=88%>[U] '%1s' may be modified and accessed between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0404</td>
- <td width=88%>[U] More than one read access to volatile objects between sequence points.</td>
- </tr>
- <tr>
- <td width=12%>qac-0405</td>
- <td width=88%>[U] More than one modification of volatile objects between sequence points.</td>
- </tr>
- <tr>
- <td width=12%>qac-3226</td>
- <td width=88%>The result of an assignment is being used in an arithmetic operation or another assigning operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-3326</td>
- <td width=88%>The result of an assignment is being used in a logical operation.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP11</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not make assumptions regarding the layout of structures with bit-fields</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0310</td>
- <td width=88%>Casting to different object pointer type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0751</td>
- <td width=88%>Casting to char pointer type.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP12</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not ignore values returned by functions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3200</td>
- <td width=88%>'%1s' returns a value which is not being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP13</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Treat relational and equality operators as if they were nonassociative</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3392</td>
- <td width=88%>Extra parentheses recommended. A shift, relational or equality operation is the operand of a second identical operator.</td>
- </tr>
- <tr>
- <td width=12%>qac-3401</td>
- <td width=88%>Possible precedence confusion: extra parentheses are recommended here.</td>
- </tr>
- <tr>
- <td width=12%>qac-4111</td>
- <td width=88%>Right hand operand of relational operator is a 'Boolean' expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-4112</td>
- <td width=88%>Left hand operand of relational operator is a 'Boolean' expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-4113</td>
- <td width=88%>Both operands of relational operator are 'Boolean' expressions.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP15</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not place a semicolon on the same line as an if, for, or while statement</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3109</td>
- <td width=88%>Null statement follows other code on the same line.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP16</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not compare function pointers to constant values</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0428</td>
- <td width=88%>Function identifier is not followed by () but a function call may be intended.</td>
- </tr>
- <tr>
- <td width=12%>qac-3004</td>
- <td width=88%>This integral constant expression is being interpreted as a null pointer constant.</td>
- </tr>
- <tr>
- <td width=12%>qac-3344</td>
- <td width=88%>Controlling expression is not an 'essentially Boolean' expression.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP19</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Use braces for the body of an if, for, or while statement</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2212</td>
- <td width=88%>Body of control statement is not enclosed within braces.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP20</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Perform explicit tests to determine success, true and false, and equality</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3344</td>
- <td width=88%>Controlling expression is not an 'essentially Boolean' expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-4116</td>
- <td width=88%>Operand of logical ! operator is not an 'essentially Boolean' expression.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP30</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not depend on the order of evaluation for side effects</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0400</td>
- <td width=88%>[U] '%1s' is modified more than once between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0401</td>
- <td width=88%>[U] '%1s' may be modified more than once between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0402</td>
- <td width=88%>[U] '%1s' is modified and accessed between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0403</td>
- <td width=88%>[U] '%1s' may be modified and accessed between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0404</td>
- <td width=88%>[U] More than one read access to volatile objects between sequence points.</td>
- </tr>
- <tr>
- <td width=12%>qac-0405</td>
- <td width=88%>[U] More than one modification of volatile objects between sequence points.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP32</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not access a volatile object through a nonvolatile reference</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0312</td>
- <td width=88%>Dangerous pointer cast results in loss of volatile qualification.</td>
- </tr>
- <tr>
- <td width=12%>qac-0562</td>
- <td width=88%>[C] Right operand of assignment points to a more heavily qualified type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0563</td>
- <td width=88%>[C] Right operand of assignment is not of compatible pointer type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0673</td>
- <td width=88%>[C] Initializer points to a more heavily qualified type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0674</td>
- <td width=88%>[C] Initializer for pointer is of incompatible type.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP33</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not read uninitialized memory</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2726</td>
- <td width=88%>Definite: Use of uninitialized resource.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2727</td>
- <td width=88%>Apparent: Use of uninitialized resource.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2728</td>
- <td width=88%>Suspicious: Use of uninitialized resource.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2961</td>
- <td width=88%>Definite: Using value of uninitialized automatic object '%s'.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2962</td>
- <td width=88%>Apparent: Using value of uninitialized automatic object '%s'.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2963</td>
- <td width=88%>Suspicious: Using value of uninitialized automatic object '%s'.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2966</td>
- <td width=88%>Definite: Some members of object '%s' are uninitialized.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2967</td>
- <td width=88%>Apparent: Some members of object '%s' are uninitialized.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2968</td>
- <td width=88%>Suspicious: Some members of object '%s' are uninitialized.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2971</td>
- <td width=88%>Definite: Passing address of uninitialized object '%s' to a function parameter declared as a pointer to const.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2972</td>
- <td width=88%>Apparent: Passing address of uninitialized object '%s' to a function parameter declared as a pointer to const.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2973</td>
- <td width=88%>Suspicious: Passing address of uninitialized object '%s' to a function parameter declared as a pointer to const.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2976</td>
- <td width=88%>Definite: Passing address of partially initialized object '%s' to a function parameter declared as a pointer to const.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2977</td>
- <td width=88%>Apparent: Passing address of partially initialized object '%s' to a function parameter declared as a pointer to const.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2978</td>
- <td width=88%>Suspicious: Passing address of partially initialized object '%s' to a function parameter declared as a pointer to const.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP34</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not dereference null pointers</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2810</td>
- <td width=88%>Constant: Dereference of NULL pointer.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2811</td>
- <td width=88%>Definite: Dereference of NULL pointer.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2812</td>
- <td width=88%>Apparent: Dereference of NULL pointer.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2813</td>
- <td width=88%>Suspicious: Dereference of NULL pointer.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP35</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not modify objects with temporary lifetime</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0450</td>
- <td width=88%>[U] Passing an array with temporary lifetime as a function parameter.</td>
- </tr>
- <tr>
- <td width=12%>qac-0455</td>
- <td width=88%>[U] Passing an array with temporary lifetime as a constant function parameter.</td>
- </tr>
- <tr>
- <td width=12%>qac-0459</td>
- <td width=88%>[U] Modifying the contents of an array with temporary lifetime.</td>
- </tr>
- <tr>
- <td width=12%>qac-0464</td>
- <td width=88%>[U] Storing a pointer to an array with temporary lifetime.</td>
- </tr>
- <tr>
- <td width=12%>qac-0465</td>
- <td width=88%>[U] Returning a pointer to an array with temporary lifetime.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP36</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not cast pointers into more strictly aligned pointer types</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0326</td>
- <td width=88%>[I] Cast between a pointer to void and an integral type.</td>
- </tr>
- <tr>
- <td width=12%>qac-3305</td>
- <td width=88%>Pointer cast to stricter alignment.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP37</td>
- <td width=2%>Rule</td>
- <td width=40%>Call functions with the correct number and type of arguments</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1331</td>
- <td width=88%>Type or number of arguments doesn't match previous use of the function.</td>
- </tr>
- <tr>
- <td width=12%>qac-1332</td>
- <td width=88%>Type or number of arguments doesn't match prototype found later.</td>
- </tr>
- <tr>
- <td width=12%>qac-1333</td>
- <td width=88%>Type or number of arguments doesn't match function definition found later.</td>
- </tr>
- <tr>
- <td width=12%>qac-3002</td>
- <td width=88%>Defining '%1s()' with an identifier list and separate parameter declarations is an obsolescent feature.</td>
- </tr>
- <tr>
- <td width=12%>qac-3320</td>
- <td width=88%>Type of argument no. %1s differs from its type in definition of function.</td>
- </tr>
- <tr>
- <td width=12%>qac-3335</td>
- <td width=88%>No function declaration. Implicit declaration inserted: 'extern int %1s();'.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP39</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not access a variable through a pointer of an incompatible type</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0310</td>
- <td width=88%>Casting to different object pointer type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0751</td>
- <td width=88%>Casting to char pointer type.</td>
- </tr>
- <tr>
- <td width=12%>qac-3305</td>
- <td width=88%>Pointer cast to stricter alignment.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP40</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not modify constant objects</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0563</td>
- <td width=88%>[C] Right operand of assignment is not of compatible pointer type.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP42</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not compare padding data</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4726</td>
- <td width=88%>Definite: Comparison of padding bits that are not part of the object representation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4727</td>
- <td width=88%>Apparent: Comparison of padding bits that are not part of the object representation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4728</td>
- <td width=88%>Suspicious: Comparison of padding bits that are not part of the object representation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4729</td>
- <td width=88%>Possible: Comparison of padding bits that are not part of the object representation.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP43</td>
- <td width=2%>Rule</td>
- <td width=40%>Avoid undefined behavior when using restrict-qualified pointers</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1057</td>
- <td width=88%>[C99] The keyword 'restrict' has been used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP44</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not rely on side effects in operands to sizeof, _Alignof, or _Generic</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3307</td>
- <td width=88%>The operand of 'sizeof' is an expression with implied side effects, but they will not be evaluated.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP45</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not perform assignments in selection statements</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3314</td>
- <td width=88%>This controlling expression is an assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-3326</td>
- <td width=88%>The result of an assignment is being used in a logical operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-3344</td>
- <td width=88%>Controlling expression is not an 'essentially Boolean' expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-3416</td>
- <td width=88%>Logical operation performed on expression with persistent side effects.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP46</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not use a bitwise operator with a Boolean-like operand</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3344</td>
- <td width=88%>Controlling expression is not an 'essentially Boolean' expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-4502</td>
- <td width=88%>An expression of 'essentially Boolean' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>EXP47</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not call va_arg with an argument of the incorrect type</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4901</td>
- <td width=88%>Definite: Invalid call to va_arg.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4902</td>
- <td width=88%>Apparent: Invalid call to va_arg.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4903</td>
- <td width=88%>Suspicious: Invalid call to va_arg.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4904</td>
- <td width=88%>Possible: Invalid call to va_arg.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO01</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Be careful using functions that use file names for identification</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5011</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO03</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not make assumptions about fopen() and file creation</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5012</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO06</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Create files with appropriate access permissions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5013</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO08</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Take care when calling remove() on an open file</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5014</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO10</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Take care when using the rename() function</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5015</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO21</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not create temporary files in shared directories</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5016</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO30</td>
- <td width=2%>Rule</td>
- <td width=40%>Exclude user input from format strings</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4916</td>
- <td width=88%>Definite: Using a tainted variable as format string.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4917</td>
- <td width=88%>Apparent: Using a tainted variable as format string.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4918</td>
- <td width=88%>Suspicious: Using a tainted variable as format string.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO32</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not perform operations on devices that are only appropriate for files</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4921</td>
- <td width=88%>Definite: Using a tainted variable as a device name when opening a device that could be a file.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4922</td>
- <td width=88%>Apparent: Using a tainted variable as a device name when opening a device that could be a file.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4923</td>
- <td width=88%>Suspicious: Using a tainted variable as a device name when opening a device that could be a file.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO34</td>
- <td width=2%>Rule</td>
- <td width=40%>Distinguish between characters read from a file and EOF or WEOF</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2676</td>
- <td width=88%>Definite: The value originating from an EOF returning function was modified before being compared with macro EOF.</td>
- </tr>
- <tr>
- <td width=12%>qac-2678</td>
- <td width=88%>Suspicious: The value originating from an EOF returning function was modified before being compared with macro EOF.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO37</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not assume that fgets() or fgetws() returns a nonempty string when successful</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4911</td>
- <td width=88%>Definite: Assuming that fgets or fgetws returned a non empty string.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4912</td>
- <td width=88%>Apparent: Assuming that fgets or fgetws returned a non empty string.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4913</td>
- <td width=88%>Suspicious: Assuming that fgets or fgetws returned a non empty string.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO38</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not copy a FILE object</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1485</td>
- <td width=88%>A pointer to a FILE object is dereferenced.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO39</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not alternately input and output from a stream without an intervening flush or positioning call</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4711</td>
- <td width=88%>Definite: Alternating I/O operations on a file stream found without an intervening positioning call or EOF.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4712</td>
- <td width=88%>Apparent: Alternating I/O operations on a file stream found without an intervening positioning call or EOF.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4713</td>
- <td width=88%>Suspicious: Alternating I/O operations on a file stream found without an intervening positioning call or EOF.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO40</td>
- <td width=2%>Rule</td>
- <td width=40%>Reset strings on fgets() or fgetws() failure</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4861</td>
- <td width=88%>Definite: Using an array containing indeterminate values after a call to fgets or fgetws.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4862</td>
- <td width=88%>Apparent: Using an array containing indeterminate values after a call to fgets or fgetws.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4863</td>
- <td width=88%>Suspicious: Using an array containing indeterminate values after a call to fgets or fgetws.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO41</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not call getc(), putc(), getwc(), or putwc() with a stream argument that has side effects</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5036</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO42</td>
- <td width=2%>Rule</td>
- <td width=40%>Close files when they are no longer needed</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2701</td>
- <td width=88%>Definite: Opened file is not closed.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2702</td>
- <td width=88%>Apparent: Opened file is not closed.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2703</td>
- <td width=88%>Suspicious: Opened file is not closed.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO44</td>
- <td width=2%>Rule</td>
- <td width=40%>Only use values for fsetpos() that are returned from fgetpos()</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4841</td>
- <td width=88%>Definite: Passing a file position argument to fsetpos() not obtained from fgetpos().</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4842</td>
- <td width=88%>Apparent: Passing a file position argument to fsetpos() not obtained from fgetpos().</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4843</td>
- <td width=88%>Suspicious: Passing a file position argument to fsetpos() not obtained from fgetpos().</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO45</td>
- <td width=2%>Rule</td>
- <td width=40%>Avoid TOCTOU race conditions while accessing files</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4851</td>
- <td width=88%>Definite: File access time-of-check time-of-use race condition.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4852</td>
- <td width=88%>Apparent: File access time-of-check time-of-use race condition.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4853</td>
- <td width=88%>Suspicious: File access time-of-check time-of-use race condition.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO46</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not access a closed file</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2696</td>
- <td width=88%>Definite: Attempt to access a file which has been closed.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2697</td>
- <td width=88%>Apparent: Attempt to access a file which has been closed.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2698</td>
- <td width=88%>Suspicious: Attempt to access a file which has been closed.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FIO47</td>
- <td width=2%>Rule</td>
- <td width=40%>Use valid format strings</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0161</td>
- <td width=88%>[U] Unknown length modifier used with 'i' or 'd' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0162</td>
- <td width=88%>[U] Unknown length modifier used with 'o' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0163</td>
- <td width=88%>[U] Unknown length modifier used with 'u' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0164</td>
- <td width=88%>[U] Unknown length modifier used with 'x' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0165</td>
- <td width=88%>[U] Unknown length modifier used with 'X' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0166</td>
- <td width=88%>[U] Unknown length modifier used with 'f' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0167</td>
- <td width=88%>[U] Unknown length modifier used with 'e' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0168</td>
- <td width=88%>[U] Unknown length modifier used with 'E' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0169</td>
- <td width=88%>[U] Unknown length modifier used with 'g' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0170</td>
- <td width=88%>[U] Unknown length modifier used with 'G' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0171</td>
- <td width=88%>[U] Unknown length modifier used with 'c' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0172</td>
- <td width=88%>[U] Unknown length modifier used with '%%' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0173</td>
- <td width=88%>[U] Unknown length modifier used with 's' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0174</td>
- <td width=88%>[U] Unknown length modifier used with 'n' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0175</td>
- <td width=88%>[U] Unknown length modifier used with 'p' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0176</td>
- <td width=88%>[U] Incomplete conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0177</td>
- <td width=88%>[U] Field width of format conversion specifier exceeds 509 characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0178</td>
- <td width=88%>[U] Precision of format conversion specifier exceeds 509 characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0179</td>
- <td width=88%>[U] Argument type does not match conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0180</td>
- <td width=88%>[C99] Use of ll for conversion specifier.</td>
- </tr>
- <tr>
- <td width=12%>qac-0184</td>
- <td width=88%>[U] Insufficient arguments to satisfy conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0185</td>
- <td width=88%>[U] Call contains more arguments than conversion specifiers.</td>
- </tr>
- <tr>
- <td width=12%>qac-0190</td>
- <td width=88%>[U] Using unsupported conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0191</td>
- <td width=88%>[U] Unknown length modifier used with 'd/i/n' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0192</td>
- <td width=88%>[U] Unknown length modifier used with 'o' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0193</td>
- <td width=88%>[U] Unknown length modifier used with 'u' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0194</td>
- <td width=88%>[U] Unknown length modifier used with 'x/X' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0195</td>
- <td width=88%>[U] Unknown length modifier used with 'e/E/f/F/g/G' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0196</td>
- <td width=88%>[U] Unknown length modifier used with 's' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0197</td>
- <td width=88%>[U] Unknown length modifier used with 'p' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0198</td>
- <td width=88%>[U] Unknown length modifier used with '%%' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0199</td>
- <td width=88%>[U] Unknown length modifier used with '[' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0200</td>
- <td width=88%>[U] Unknown length modifier used with 'c' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0201</td>
- <td width=88%>[U] Incomplete conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0202</td>
- <td width=88%>[I] '-' character in '[]' conversion specification is implementation defined.</td>
- </tr>
- <tr>
- <td width=12%>qac-0204</td>
- <td width=88%>[U] Field width of format conversion specifier exceeds 509 characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0206</td>
- <td width=88%>[U] Argument type does not match conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0209</td>
- <td width=88%>[U] Using a non-constant format string.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FLP00</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Understand the limitations of floating-point numbers</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0275</td>
- <td width=88%>[U] Floating value is out of range for conversion to destination type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0581</td>
- <td width=88%>[I] Floating-point constant may be too small to be representable.</td>
- </tr>
- <tr>
- <td width=12%>qac-1490</td>
- <td width=88%>[I] Comparison of a floating point object representation.</td>
- </tr>
- <tr>
- <td width=12%>qac-3339</td>
- <td width=88%>Floating point variable used as 'while' loop control variable.</td>
- </tr>
- <tr>
- <td width=12%>qac-3340</td>
- <td width=88%>Floating point variable used as 'for' loop control variable.</td>
- </tr>
- <tr>
- <td width=12%>qac-3341</td>
- <td width=88%>Comparing floating point expressions for equality (with '==' or '!=').</td>
- </tr>
- <tr>
- <td width=12%>qac-3342</td>
- <td width=88%>Controlling expression of 'for' loop is a floating point comparison.</td>
- </tr>
- <tr>
- <td width=12%>qac-3362</td>
- <td width=88%>Comparing floating point expressions to zero or infinity.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FLP02</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Avoid using floating-point numbers when precise computation is needed</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0790</td>
- <td width=88%>This translation unit makes use of floating types.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FLP06</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Convert integers to floating point for floating point operations</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-4117</td>
- <td width=88%>Result of integer division operation implicitly converted to a floating type.</td>
- </tr>
- <tr>
- <td width=12%>qac-4118</td>
- <td width=88%>Result of integer division operation cast to a floating type.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FLP30</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not use floating-point variables as loop counters</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3339</td>
- <td width=88%>Floating point variable used as 'while' loop control variable.</td>
- </tr>
- <tr>
- <td width=12%>qac-3340</td>
- <td width=88%>Floating point variable used as 'for' loop control variable.</td>
- </tr>
- <tr>
- <td width=12%>qac-3342</td>
- <td width=88%>Controlling expression of 'for' loop is a floating point comparison.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FLP32</td>
- <td width=2%>Rule</td>
- <td width=40%>Prevent or detect domain and range errors in math functions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5025</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FLP34</td>
- <td width=2%>Rule</td>
- <td width=40%>Ensure that floating-point conversions are within range of the new type</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-4450</td>
- <td width=88%>An expression of 'essentially floating' type (%1s) is being converted to Boolean type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4451</td>
- <td width=88%>An expression of 'essentially floating' type (%1s) is being converted to character type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4452</td>
- <td width=88%>An expression of 'essentially floating' type (%1s) is being converted to enum type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4453</td>
- <td width=88%>An expression of 'essentially floating' type (%1s) is being converted to signed type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4454</td>
- <td width=88%>An expression of 'essentially floating' type (%1s) is being converted to unsigned type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4462</td>
- <td width=88%>A non-constant expression of 'essentially floating' type (%1s) is being converted to narrower floating type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4465</td>
- <td width=88%>A constant expression of 'essentially floating' type (%1s) is being converted to narrower floating type, '%2s' on assignment.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FLP36</td>
- <td width=2%>Rule</td>
- <td width=40%>Preserve precision when converting integral values to floating-point type</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1260</td>
- <td width=88%>Integer constant implicitly converted to a floating type.</td>
- </tr>
- <tr>
- <td width=12%>qac-1263</td>
- <td width=88%>Floating constant causes implicit conversion of other (integral) operand.</td>
- </tr>
- <tr>
- <td width=12%>qac-1298</td>
- <td width=88%>An integer constant of 'essentially signed' type is being converted to floating type on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-1299</td>
- <td width=88%>An integer constant of 'essentially unsigned' type is being converted to floating type on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-1800</td>
- <td width=88%>The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1802</td>
- <td width=88%>The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this relational operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1803</td>
- <td width=88%>The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this equality operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1804</td>
- <td width=88%>The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this conditional operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-4117</td>
- <td width=88%>Result of integer division operation implicitly converted to a floating type.</td>
- </tr>
- <tr>
- <td width=12%>qac-4435</td>
- <td width=88%>A non-constant expression of 'essentially signed' type (%1s) is being converted to floating type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4437</td>
- <td width=88%>A constant expression of 'essentially signed' type (%1s) is being converted to floating type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4445</td>
- <td width=88%>An expression of 'essentially unsigned' type (%1s) is being converted to floating type, '%2s' on assignment.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>FLP37</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not use object representations to compare floating-point values</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1490</td>
- <td width=88%>[I] Comparison of a floating point object representation.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT02</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Understand integer conversion rules</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1257</td>
- <td width=88%>An integer constant suffixed with L or LL is being converted to a type of lower rank on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-1820</td>
- <td width=88%>The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1821</td>
- <td width=88%>The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1822</td>
- <td width=88%>The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this relational operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1823</td>
- <td width=88%>The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this equality operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1824</td>
- <td width=88%>The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this conditional operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1830</td>
- <td width=88%>The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1831</td>
- <td width=88%>The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1832</td>
- <td width=88%>The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this relational operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1833</td>
- <td width=88%>The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this equality operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1834</td>
- <td width=88%>The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this conditional operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-1860</td>
- <td width=88%>The operands of this arithmetic operator are of different 'essential signedness' but will generate a result of type 'signed int'.</td>
- </tr>
- <tr>
- <td width=12%>qac-1861</td>
- <td width=88%>The operands of this bitwise operator are of different 'essential signedness' but will generate a result of type 'signed int'.</td>
- </tr>
- <tr>
- <td width=12%>qac-1862</td>
- <td width=88%>The operands of this relational operator are of different 'essential signedness' but will both be promoted to 'signed int' for comparison.</td>
- </tr>
- <tr>
- <td width=12%>qac-1863</td>
- <td width=88%>The operands of this equality operator are of different 'essential signedness' but will both be promoted to 'signed int' for comparison.</td>
- </tr>
- <tr>
- <td width=12%>qac-1864</td>
- <td width=88%>The 2nd and 3rd operands of this conditional operator are of different 'essential signedness'. The result will be in the promoted type 'signed int'.</td>
- </tr>
- <tr>
- <td width=12%>qac-1880</td>
- <td width=88%>The operands of this relational operator are expressions of different 'essential type' categories (%1s and %2s).</td>
- </tr>
- <tr>
- <td width=12%>qac-1881</td>
- <td width=88%>The operands of this equality operator are expressions of different 'essential type' categories (%1s and %2s).</td>
- </tr>
- <tr>
- <td width=12%>qac-1882</td>
- <td width=88%>The 2nd and 3rd operands of this conditional operator are expressions of different 'essential type' categories (%1s and %2s).</td>
- </tr>
- <tr>
- <td width=12%>qac-2120</td>
- <td width=88%>Integral promotion : unsigned bit-field promoted to signed int.</td>
- </tr>
- <tr>
- <td width=12%>qac-2130</td>
- <td width=88%>Default argument promotion : unsigned bit-field promoted to signed int.</td>
- </tr>
- <tr>
- <td width=12%>qac-4397</td>
- <td width=88%>An expression which is the result of a ~ or << operation has not been cast to its essential type.</td>
- </tr>
- <tr>
- <td width=12%>qac-4434</td>
- <td width=88%>A non-constant expression of 'essentially signed' type (%1s) is being converted to unsigned type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4446</td>
- <td width=88%>A non-constant expression of 'essentially unsigned' type (%1s) is being converted to signed type, '%2s' on assignment.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT04</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Enforce limits on integer values originating from tainted sources</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2794</td>
- <td width=88%>Possible: Tainted right hand operand of shift operator is negative or too large.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2804</td>
- <td width=88%>Possible: Overflow in signed arithmetic tainted operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2854</td>
- <td width=88%>Possible: Implicit conversion of a tainted expression to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2859</td>
- <td width=88%>Possible: Casting a tainted expression to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2864</td>
- <td width=88%>Possible: Implementation-defined value resulting from left shift operation on tainted expression of signed type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2894</td>
- <td width=88%>Possible: Negative tainted value implicitly converted to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2899</td>
- <td width=88%>Possible: Negative tainted value cast to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2904</td>
- <td width=88%>Possible: Positive integer tainted value truncated by implicit conversion to a smaller unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2909</td>
- <td width=88%>Possible: Positive integer tainted value truncated by cast to a smaller unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2914</td>
- <td width=88%>Possible: Wraparound in unsigned arithmetic tainted operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2924</td>
- <td width=88%>Possible: Left shift operation on tainted expression of unsigned type results in loss of high order bits.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2944</td>
- <td width=88%>Possible: Result of implicit conversion of a tainted expression is only representable in a two's complement implementation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2949</td>
- <td width=88%>Possible: Result of cast of a tainted expression is only representable in a two's complement implementation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2954</td>
- <td width=88%>Possible: Negative tainted value used in array subscript or pointer arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2956</td>
- <td width=88%>Definite: Using object '%s' with tainted value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2959</td>
- <td width=88%>Possible: Using object '%s' with tainted value.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT05</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not use input functions to convert character data if they cannot handle all possible inputs</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5005</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT07</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Use only explicitly signed or unsigned char type for numeric values</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1292</td>
- <td width=88%>An integer constant of 'essentially signed' type is being converted to type char on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-1293</td>
- <td width=88%>An integer constant of 'essentially unsigned' type is being converted to type char on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4401</td>
- <td width=88%>An expression of 'essentially Boolean' type (%1s) is being converted to character type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4421</td>
- <td width=88%>An expression of 'essentially enum' type (%1s) is being converted to character type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4431</td>
- <td width=88%>An expression of 'essentially signed' type (%1s) is being converted to character type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4441</td>
- <td width=88%>An expression of 'essentially unsigned' type (%1s) is being converted to character type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4451</td>
- <td width=88%>An expression of 'essentially floating' type (%1s) is being converted to character type, '%2s' on assignment.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT08</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Verify that all integer values are in range</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2800</td>
- <td width=88%>Constant: Overflow in signed arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2801</td>
- <td width=88%>Definite: Overflow in signed arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2802</td>
- <td width=88%>Apparent: Overflow in signed arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2803</td>
- <td width=88%>Suspicious: Overflow in signed arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-2910</td>
- <td width=88%>Constant: Wraparound in unsigned arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2911</td>
- <td width=88%>Definite: Wraparound in unsigned arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2912</td>
- <td width=88%>Apparent: Wraparound in unsigned arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2913</td>
- <td width=88%>Suspicious: Wraparound in unsigned arithmetic operation.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT09</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Ensure enumeration constants map to unique values</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0724</td>
- <td width=88%>The value of this implicitly-specified enumeration constant is not unique.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT10</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not assume a positive remainder when using the % operator</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3103</td>
- <td width=88%>Result of signed division or remainder operation may be implementation defined.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT12</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not make assumptions about the type of a plain int bit-field when used in an expression</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0634</td>
- <td width=88%>[I] Bit-field %1s in %2s has not been declared explicitly as unsigned or signed.</td>
- </tr>
- <tr>
- <td width=12%>qac-0635</td>
- <td width=88%>[C99] Bit-field %1s in %2s has been declared with a type not explicitly supported.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT13</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Use bitwise operators only on unsigned operands</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-4532</td>
- <td width=88%>An expression of 'essentially signed' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).</td>
- </tr>
- <tr>
- <td width=12%>qac-4533</td>
- <td width=88%>An expression of 'essentially signed' type (%1s) is being used as the left-hand operand of this shift operator (%2s).</td>
- </tr>
- <tr>
- <td width=12%>qac-4534</td>
- <td width=88%>An expression of 'essentially signed' type (%1s) is being used as the right-hand operand of this shift operator (%2s).</td>
- </tr>
- <tr>
- <td width=12%>qac-4543</td>
- <td width=88%>A non-negative constant expression of 'essentially signed' type (%1s) is being used as the left-hand operand of this shift operator (%2s).</td>
- </tr>
- <tr>
- <td width=12%>qac-4544</td>
- <td width=88%>A non-negative constant expression of 'essentially signed' type (%1s) is being used as the right-hand operand of this shift operator (%2s).</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT16</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not make assumptions about representation of signed integers</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2940</td>
- <td width=88%>Constant: Result of implicit conversion is only representable in a two's complement implementation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2941</td>
- <td width=88%>Definite: Result of implicit conversion is only representable in a two's complement implementation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2942</td>
- <td width=88%>Apparent: Result of implicit conversion is only representable in a two's complement implementation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2943</td>
- <td width=88%>Suspicious: Result of implicit conversion is only representable in a two's complement implementation.</td>
- </tr>
- <tr>
- <td width=12%>qac-2945</td>
- <td width=88%>Constant: Result of cast is only representable in a two's complement implementation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2946</td>
- <td width=88%>Definite: Result of cast is only representable in a two's complement implementation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2947</td>
- <td width=88%>Apparent: Result of cast is only representable in a two's complement implementation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2948</td>
- <td width=88%>Suspicious: Result of cast is only representable in a two's complement implementation.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT18</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Evaluate integer expressions in a larger size before comparing or assigning to that size</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1890</td>
- <td width=88%>A composite expression of 'essentially signed' type (%1s) is being implicitly converted to a wider signed type, '%2s'.</td>
- </tr>
- <tr>
- <td width=12%>qac-1891</td>
- <td width=88%>A composite expression of 'essentially unsigned' type (%1s) is being implicitly converted to a wider unsigned type, '%2s'.</td>
- </tr>
- <tr>
- <td width=12%>qac-1892</td>
- <td width=88%>A composite expression of 'essentially floating' type (%1s) is being implicitly converted to a wider floating type, '%2s'.</td>
- </tr>
- <tr>
- <td width=12%>qac-1893</td>
- <td width=88%>The 2nd and 3rd operands of this conditional operator are both 'essentially signed' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other.</td>
- </tr>
- <tr>
- <td width=12%>qac-1894</td>
- <td width=88%>The 2nd and 3rd operands of this conditional operator are both 'essentially unsigned' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other.</td>
- </tr>
- <tr>
- <td width=12%>qac-1895</td>
- <td width=88%>The 2nd and 3rd operands of this conditional operator are both 'essentially floating' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other.</td>
- </tr>
- <tr>
- <td width=12%>qac-4490</td>
- <td width=88%>A composite expression of 'essentially signed' type (%1s) is being converted to wider signed type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4491</td>
- <td width=88%>A composite expression of 'essentially unsigned' type (%1s) is being converted to wider unsigned type, '%2s' on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-4492</td>
- <td width=88%>A composite expression of 'essentially floating' type (%1s) is being converted to wider floating type, '%2s' on assignment.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT30</td>
- <td width=2%>Rule</td>
- <td width=40%>Ensure that unsigned integer operations do not wrap</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2910</td>
- <td width=88%>Constant: Wraparound in unsigned arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2911</td>
- <td width=88%>Definite: Wraparound in unsigned arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2912</td>
- <td width=88%>Apparent: Wraparound in unsigned arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2913</td>
- <td width=88%>Suspicious: Wraparound in unsigned arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-3383</td>
- <td width=88%>Cannot identify wraparound guard for unsigned arithmetic expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-3384</td>
- <td width=88%>Cannot identify wraparound guard for dependent unsigned arithmetic expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-3385</td>
- <td width=88%>Cannot identify wraparound guard for sizeof-VLA expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-3386</td>
- <td width=88%>Cannot identify wraparound guard for dependent sizeof-VLA expression.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT31</td>
- <td width=2%>Rule</td>
- <td width=40%>Ensure that integer conversions do not result in lost or misinterpreted data</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2850</td>
- <td width=88%>Constant: Implicit conversion to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2851</td>
- <td width=88%>Definite: Implicit conversion to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2852</td>
- <td width=88%>Apparent: Implicit conversion to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2853</td>
- <td width=88%>Suspicious: Implicit conversion to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>qac-2855</td>
- <td width=88%>Constant: Casting to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2856</td>
- <td width=88%>Definite: Casting to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2857</td>
- <td width=88%>Apparent: Casting to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2858</td>
- <td width=88%>Suspicious: Casting to a signed integer type of insufficient size.</td>
- </tr>
- <tr>
- <td width=12%>qac-2890</td>
- <td width=88%>Constant: Negative value implicitly converted to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2891</td>
- <td width=88%>Definite: Negative value implicitly converted to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2892</td>
- <td width=88%>Apparent: Negative value implicitly converted to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2893</td>
- <td width=88%>Suspicious: Negative value implicitly converted to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>qac-2895</td>
- <td width=88%>Constant: Negative value cast to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2896</td>
- <td width=88%>Definite: Negative value cast to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2897</td>
- <td width=88%>Apparent: Negative value cast to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2898</td>
- <td width=88%>Suspicious: Negative value cast to an unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>qac-2900</td>
- <td width=88%>Constant: Positive integer value truncated by implicit conversion to a smaller unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2901</td>
- <td width=88%>Definite: Positive integer value truncated by implicit conversion to a smaller unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2902</td>
- <td width=88%>Apparent: Positive integer value truncated by implicit conversion to a smaller unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2903</td>
- <td width=88%>Suspicious: Positive integer value truncated by implicit conversion to a smaller unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>qac-2905</td>
- <td width=88%>Constant: Positive integer value truncated by cast to a smaller unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2906</td>
- <td width=88%>Definite: Positive integer value truncated by cast to a smaller unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2907</td>
- <td width=88%>Apparent: Positive integer value truncated by cast to a smaller unsigned type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2908</td>
- <td width=88%>Suspicious: Positive integer value truncated by cast to a smaller unsigned type.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT32</td>
- <td width=2%>Rule</td>
- <td width=40%>Ensure that operations on signed integers do not result in overflow</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2800</td>
- <td width=88%>Constant: Overflow in signed arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2801</td>
- <td width=88%>Definite: Overflow in signed arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2802</td>
- <td width=88%>Apparent: Overflow in signed arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2803</td>
- <td width=88%>Suspicious: Overflow in signed arithmetic operation.</td>
- </tr>
- <tr>
- <td width=12%>qac-2860</td>
- <td width=88%>Constant: Implementation-defined value resulting from left shift operation on expression of signed type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2861</td>
- <td width=88%>Definite: Implementation-defined value resulting from left shift operation on expression of signed type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2862</td>
- <td width=88%>Apparent: Implementation-defined value resulting from left shift operation on expression of signed type.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2863</td>
- <td width=88%>Suspicious: Implementation-defined value resulting from left shift operation on expression of signed type.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT33</td>
- <td width=2%>Rule</td>
- <td width=40%>Ensure that division and remainder operations do not result in divide-by-zero errors</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2830</td>
- <td width=88%>Constant: Division by zero.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2831</td>
- <td width=88%>Definite: Division by zero.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2832</td>
- <td width=88%>Apparent: Division by zero.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2833</td>
- <td width=88%>Suspicious: Division by zero.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT34</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0499</td>
- <td width=88%>Right operand of shift operator is greater than or equal to the width of the essential type of the left operand.</td>
- </tr>
- <tr>
- <td width=12%>qac-2790</td>
- <td width=88%>Constant: Right hand operand of shift operator is negative or too large.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2791</td>
- <td width=88%>Definite: Right hand operand of shift operator is negative or too large.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2792</td>
- <td width=88%>Apparent: Right hand operand of shift operator is negative or too large.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2793</td>
- <td width=88%>Suspicious: Right hand operand of shift operator is negative or too large.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT35</td>
- <td width=2%>Rule</td>
- <td width=40%>Use correct integer precisions</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0582</td>
- <td width=88%>[I] Multiplying the size of an integer by CHAR_BIT will include padding bits in the result.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>INT36</td>
- <td width=2%>Rule</td>
- <td width=40%>Converting a pointer to integer or integer to pointer</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0303</td>
- <td width=88%>[I] Cast between a pointer to volatile object and an integral type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0305</td>
- <td width=88%>[I] Cast between a pointer to function and an integral type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0306</td>
- <td width=88%>[I] Cast between a pointer to object and an integral type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0309</td>
- <td width=88%>[U] Integral type is not large enough to hold a pointer value.</td>
- </tr>
- <tr>
- <td width=12%>qac-0324</td>
- <td width=88%>[u] Cast between a pointer to incomplete type and an integral type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0326</td>
- <td width=88%>[I] Cast between a pointer to void and an integral type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0360</td>
- <td width=88%>An expression of pointer type is being converted to type _Bool on assignment.</td>
- </tr>
- <tr>
- <td width=12%>qac-0361</td>
- <td width=88%>An expression of pointer type is being cast to type _Bool.</td>
- </tr>
- <tr>
- <td width=12%>qac-0362</td>
- <td width=88%>An expression of essentially Boolean type is being cast to a pointer.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MEM02</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Immediately cast the result of a memory allocation function call into a pointer to the allocated type</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0695</td>
- <td width=88%>Type given in sizeof is not compatible with the pointed to type used to cast malloc.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MEM03</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Clear sensitive information stored in reusable resources</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5010</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MEM05</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Avoid large stack allocations</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1051</td>
- <td width=88%>[C99] A variable length array has been declared.</td>
- </tr>
- <tr>
- <td width=12%>rcma-1520</td>
- <td width=88%>Functions are indirectly recursive.</td>
- </tr>
- <tr>
- <td width=12%>qac-3670</td>
- <td width=88%>Recursive call to function containing this call.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MEM30</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not access freed memory</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-4866</td>
- <td width=88%>Definite: Memory is used after free (owning pointer: %1s).</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4867</td>
- <td width=88%>Apparent: Memory is used after free (owning pointer: %1s).</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4868</td>
- <td width=88%>Suspicious: Memory is used after free (owning pointer: %1s).</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4871</td>
- <td width=88%>Definite: Zero size has been passed to realloc, malloc or calloc.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4872</td>
- <td width=88%>Apparent: Zero size has been passed to realloc, malloc or calloc.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-4873</td>
- <td width=88%>Suspicious: Zero size has been passed to realloc, malloc or calloc.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MEM31</td>
- <td width=2%>Rule</td>
- <td width=40%>Free dynamically allocated memory when no longer needed</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2706</td>
- <td width=88%>Definite: Allocated memory is not deallocated (owning pointer: %1s).</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2707</td>
- <td width=88%>Apparent: Allocated memory is not deallocated (owning pointer: %1s).</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2708</td>
- <td width=88%>Suspicious: Allocated memory is not deallocated (owning pointer: %1s).</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MEM33</td>
- <td width=2%>Rule</td>
- <td width=40%>Allocate and copy structures containing a flexible array member dynamically</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-1061</td>
- <td width=88%>[C] Structure '%1s' with flexible array member '%2s' cannot be used in the declaration of structure member '%3s'.</td>
- </tr>
- <tr>
- <td width=12%>qac-1062</td>
- <td width=88%>[C] Structure '%1s' with flexible array member '%2s' cannot be used in the declaration of array elements.</td>
- </tr>
- <tr>
- <td width=12%>qac-1063</td>
- <td width=88%>[C99] '%s' is an automatically-allocated object of a type declared with a flexible array member.</td>
- </tr>
- <tr>
- <td width=12%>qac-1064</td>
- <td width=88%>[C99] '%s' is a statically-allocated object of a type declared with a flexible array member.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MEM34</td>
- <td width=2%>Rule</td>
- <td width=40%>Only free memory allocated dynamically</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>dataflow-2721</td>
- <td width=88%>Definite: Deallocation of non dynamic memory (owning pointer: %1s).</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2722</td>
- <td width=88%>Apparent: Deallocation of non dynamic memory (owning pointer: %1s).</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2723</td>
- <td width=88%>Suspicious: Deallocation of non dynamic memory (owning pointer: %1s).</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MEM35</td>
- <td width=2%>Rule</td>
- <td width=40%>Allocate sufficient memory for an object</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0696</td>
- <td width=88%>The size of the allocated memory block is smaller than the size of the object type addressed by the pointer cast.</td>
- </tr>
- <tr>
- <td width=12%>qac-0701</td>
- <td width=88%>Argument for memory size does not refer to 'sizeof (%1s)'.</td>
- </tr>
- <tr>
- <td width=12%>qac-1069</td>
- <td width=88%>[C99] Taking sizeof a struct with a flexible array member without adding the array size.</td>
- </tr>
- <tr>
- <td width=12%>qac-1071</td>
- <td width=88%>[C99] Taking sizeof a struct with a flexible array member without explicitly adding the array size in terms of element sizes.</td>
- </tr>
- <tr>
- <td width=12%>qac-1073</td>
- <td width=88%>[C99] Taking sizeof a struct with a flexible array member while adding an array size based on the wrong element type.</td>
- </tr>
- <tr>
- <td width=12%>qac-2840</td>
- <td width=88%>Constant: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2841</td>
- <td width=88%>Definite: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2842</td>
- <td width=88%>Apparent: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2843</td>
- <td width=88%>Suspicious: Dereference of an invalid pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2935</td>
- <td width=88%>Constant: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2936</td>
- <td width=88%>Definite: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2937</td>
- <td width=88%>Apparent: Dereference of an invalid char pointer value.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2938</td>
- <td width=88%>Suspicious: Dereference of an invalid char pointer value.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MEM36</td>
- <td width=2%>Rule</td>
- <td width=40%>Do not modify the alignment of objects by calling realloc()</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>certccm-5027</td>
- <td width=88%>'%s' is being used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MSC01</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Strive for logical completeness</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-2000</td>
- <td width=88%>No 'else' clause exists for this 'if' statement.</td>
- </tr>
- <tr>
- <td width=12%>qac-2002</td>
- <td width=88%>No 'default' label found in this 'switch' statement.</td>
- </tr>
- <tr>
- <td width=12%>qac-2004</td>
- <td width=88%>No concluding 'else' exists in this 'if'-'else'-'if' statement.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MSC04</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Use comments consistently and in a readable fashion</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-3108</td>
- <td width=88%>Nested comments are not recognized in the ISO standard.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MSC09</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Character encoding: Use subset of ASCII for safety</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0285</td>
- <td width=88%>[I] Character constant contains character which is not a member of the basic source character set.</td>
- </tr>
- <tr>
- <td width=12%>qac-0286</td>
- <td width=88%>[I] String literal contains character which is not a member of the basic source character set.</td>
- </tr>
- <tr>
- <td width=12%>qac-0287</td>
- <td width=88%>[I] Header name contains character which is not a member of the basic source character set.</td>
- </tr>
- <tr>
- <td width=12%>qac-0288</td>
- <td width=88%>[I] Source file '%s' has comments containing characters which are not members of the basic source character set.</td>
- </tr>
- <tr>
- <td width=12%>qac-0289</td>
- <td width=88%>[I] Source file '%s' has preprocessing tokens containing characters which are not members of the basic source character set.</td>
- </tr>
- <tr>
- <td width=12%>qac-0299</td>
- <td width=88%>[I] Source file '%s' includes #pragma directives containing characters which are not members of the basic source character set.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MSC12</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Detect and remove code that has no effect or is never executed</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>rcma-1501</td>
- <td width=88%>The function '%1s' is declared but is not used within this project.</td>
- </tr>
- <tr>
- <td width=12%>rcma-1503</td>
- <td width=88%>The function '%1s' is defined but is not used within this project.</td>
- </tr>
- <tr>
- <td width=12%>qac-2008</td>
- <td width=88%>Code statements precede the first label in this 'switch' construct.</td>
- </tr>
- <tr>
- <td width=12%>qac-2877</td>
- <td width=88%>This loop will never be executed more than once.</td>
- </tr>
- <tr>
- <td width=12%>qac-2880</td>
- <td width=88%>This code is unreachable.</td>
- </tr>
- <tr>
- <td width=12%>qac-2881</td>
- <td width=88%>The code in this 'default' clause is unreachable.</td>
- </tr>
- <tr>
- <td width=12%>qac-2882</td>
- <td width=88%>This 'switch' statement will bypass the initialization of local variables.</td>
- </tr>
- <tr>
- <td width=12%>qac-2883</td>
- <td width=88%>This 'goto' statement will always bypass the initialization of local variables.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2980</td>
- <td width=88%>The value of this function parameter is never used before being modified.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2981</td>
- <td width=88%>This initialization is redundant. The value of this object is never used before being modified.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2982</td>
- <td width=88%>This assignment is redundant. The value of this object is never used before being modified.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2983</td>
- <td width=88%>This assignment is redundant. The value of this object is never subsequently used.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2984</td>
- <td width=88%>This operation is redundant. The value of the result is always '%1s'.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2985</td>
- <td width=88%>This operation is redundant. The value of the result is always that of the left-hand operand.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2986</td>
- <td width=88%>This operation is redundant. The value of the result is always that of the right-hand operand.</td>
- </tr>
- <tr>
- <td width=12%>qac-3110</td>
- <td width=88%>The left-hand operand of this ',' has no side effects.</td>
- </tr>
- <tr>
- <td width=12%>qac-3112</td>
- <td width=88%>This statement has no side-effect - it can be removed.</td>
- </tr>
- <tr>
- <td width=12%>qac-3202</td>
- <td width=88%>The label '%s:' is not used in this function and could be removed.</td>
- </tr>
- <tr>
- <td width=12%>qac-3203</td>
- <td width=88%>The variable '%1s' is set but never used.</td>
- </tr>
- <tr>
- <td width=12%>qac-3205</td>
- <td width=88%>The identifier '%1s' is not used and could be removed.</td>
- </tr>
- <tr>
- <td width=12%>qac-3206</td>
- <td width=88%>The parameter '%1s' is not used in this function.</td>
- </tr>
- <tr>
- <td width=12%>qac-3207</td>
- <td width=88%>File scope static, '%1s', is not used, and could be removed.</td>
- </tr>
- <tr>
- <td width=12%>qac-3210</td>
- <td width=88%>The global identifier '%1s' is declared here but is not used in this translation unit.</td>
- </tr>
- <tr>
- <td width=12%>qac-3219</td>
- <td width=88%>Static function '%1s()' is not used within this translation unit.</td>
- </tr>
- <tr>
- <td width=12%>qac-3229</td>
- <td width=88%>File scope static, '%1s', is written but never used.</td>
- </tr>
- <tr>
- <td width=12%>qac-3307</td>
- <td width=88%>The operand of 'sizeof' is an expression with implied side effects, but they will not be evaluated.</td>
- </tr>
- <tr>
- <td width=12%>qac-3404</td>
- <td width=88%>Statement contains a redundant * operator at top level. *p++ means *(p++) not (*p)++.</td>
- </tr>
- <tr>
- <td width=12%>qac-3422</td>
- <td width=88%>Statement contains a redundant operator at top level.</td>
- </tr>
- <tr>
- <td width=12%>qac-3423</td>
- <td width=88%>Statement contains a redundant cast at top level.</td>
- </tr>
- <tr>
- <td width=12%>qac-3425</td>
- <td width=88%>One branch of this conditional operation is a redundant expression.</td>
- </tr>
- <tr>
- <td width=12%>qac-3426</td>
- <td width=88%>Right hand side of comma expression has no side effect and its value is not used.</td>
- </tr>
- <tr>
- <td width=12%>qac-3427</td>
- <td width=88%>Right hand side of logical operator has no side effect and its value is not used.</td>
- </tr>
- <tr>
- <td width=12%>qac-3470</td>
- <td width=88%>The operand of 'sizeof' is not an expression which designates either an object or a type.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MSC13</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Detect and remove unused values</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>rcma-1500</td>
- <td width=88%>The object '%1s' is declared but is not used within this project.</td>
- </tr>
- <tr>
- <td width=12%>rcma-1502</td>
- <td width=88%>The object '%1s' is defined but is not used within this project.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2980</td>
- <td width=88%>The value of this function parameter is never used before being modified.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2981</td>
- <td width=88%>This initialization is redundant. The value of this object is never used before being modified.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2982</td>
- <td width=88%>This assignment is redundant. The value of this object is never used before being modified.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2983</td>
- <td width=88%>This assignment is redundant. The value of this object is never subsequently used.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2984</td>
- <td width=88%>This operation is redundant. The value of the result is always '%1s'.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2985</td>
- <td width=88%>This operation is redundant. The value of the result is always that of the left-hand operand.</td>
- </tr>
- <tr>
- <td width=12%>dataflow-2986</td>
- <td width=88%>This operation is redundant. The value of the result is always that of the right-hand operand.</td>
- </tr>
- <tr>
- <td width=12%>qac-3203</td>
- <td width=88%>The variable '%1s' is set but never used.</td>
- </tr>
- <tr>
- <td width=12%>qac-3205</td>
- <td width=88%>The identifier '%1s' is not used and could be removed.</td>
- </tr>
- <tr>
- <td width=12%>qac-3206</td>
- <td width=88%>The parameter '%1s' is not used in this function.</td>
- </tr>
- <tr>
- <td width=12%>qac-3207</td>
- <td width=88%>File scope static, '%1s', is not used, and could be removed.</td>
- </tr>
- <tr>
- <td width=12%>qac-3229</td>
- <td width=88%>File scope static, '%1s', is written but never used.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MSC14</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not introduce unnecessary platform dependencies</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0202</td>
- <td width=88%>[I] '-' character in '[]' conversion specification is implementation defined.</td>
- </tr>
- <tr>
- <td width=12%>qac-0240</td>
- <td width=88%>[I] This file contains the control-M character at the end of a line.</td>
- </tr>
- <tr>
- <td width=12%>qac-0241</td>
- <td width=88%>[I] This file contains the control-Z character - was this transferred from a PC?</td>
- </tr>
- <tr>
- <td width=12%>qac-0242</td>
- <td width=88%>[I] This file contains the control-M character in the middle of a line.</td>
- </tr>
- <tr>
- <td width=12%>qac-0243</td>
- <td width=88%>[I] Treating an invalid character as whitespace.</td>
- </tr>
- <tr>
- <td width=12%>qac-0246</td>
- <td width=88%>[E] Binary integer constants are a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-0284</td>
- <td width=88%>[I] Multiple character constants have implementation defined values.</td>
- </tr>
- <tr>
- <td width=12%>qac-0551</td>
- <td width=88%>[E] Cast may not operate on the left operand of the assignment operator.</td>
- </tr>
- <tr>
- <td width=12%>qac-0581</td>
- <td width=88%>[I] Floating-point constant may be too small to be representable.</td>
- </tr>
- <tr>
- <td width=12%>qac-0601</td>
- <td width=88%>[E] Function 'main()' is not of type 'int (void)' or 'int (int, char *[])'.</td>
- </tr>
- <tr>
- <td width=12%>qac-0633</td>
- <td width=88%>[E] Empty structures and unions are a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-0634</td>
- <td width=88%>[I] Bit-field %1s in %2s has not been declared explicitly as unsigned or signed.</td>
- </tr>
- <tr>
- <td width=12%>qac-0635</td>
- <td width=88%>[C99] Bit-field %1s in %2s has been declared with a type not explicitly supported.</td>
- </tr>
- <tr>
- <td width=12%>qac-0660</td>
- <td width=88%>[C11] Defining an unnamed member in a struct or union.</td>
- </tr>
- <tr>
- <td width=12%>qac-0662</td>
- <td width=88%>[C11] Accessing a member of an unnamed struct or union member.</td>
- </tr>
- <tr>
- <td width=12%>qac-0830</td>
- <td width=88%>[E] Unrecognized text encountered after a preprocessing directive.</td>
- </tr>
- <tr>
- <td width=12%>qac-0831</td>
- <td width=88%>[E] Use of '\\' in this '#include' line is a PC extension - this usage is non-portable.</td>
- </tr>
- <tr>
- <td width=12%>qac-0840</td>
- <td width=88%>[E] Extra tokens at end of #include directive.</td>
- </tr>
- <tr>
- <td width=12%>qac-0899</td>
- <td width=88%>[E] Unrecognized preprocessing directive has been ignored - assumed to be a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1001</td>
- <td width=88%>[E] '#include %s' is a VMS extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1002</td>
- <td width=88%>[E] '%s' is not a legal identifier in ISO C.</td>
- </tr>
- <tr>
- <td width=12%>qac-1003</td>
- <td width=88%>[E] '#%1s' is a language extension for in-line assembler. All statements located between #asm and #endasm will be ignored.</td>
- </tr>
- <tr>
- <td width=12%>qac-1006</td>
- <td width=88%>[E] This in-line assembler construct is a language extension. The code has been ignored.</td>
- </tr>
- <tr>
- <td width=12%>qac-1008</td>
- <td width=88%>[E] '#%s' is not a legal ISO C preprocessing directive.</td>
- </tr>
- <tr>
- <td width=12%>qac-1012</td>
- <td width=88%>[E] Use of a C++ reference type ('type &') will be treated as a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1014</td>
- <td width=88%>[E] Non-standard type specifier - this will be treated as a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1015</td>
- <td width=88%>[E] '%s' is not a legal keyword in ISO C - this will be treated as a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1019</td>
- <td width=88%>[E] '@ address' is not supported in ISO C - this will be treated as a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1020</td>
- <td width=88%>[E] '%1s' is not supported in ISO C, and is treated as a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1021</td>
- <td width=88%>[E] A statement expression is not supported in ISO C, and is treated as a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1022</td>
- <td width=88%>[E] '__alignof__' is a language extension. It is mapped to the standard '_Alignof' operator.</td>
- </tr>
- <tr>
- <td width=12%>qac-1026</td>
- <td width=88%>[E] The indicated @word construct has been ignored.</td>
- </tr>
- <tr>
- <td width=12%>qac-1028</td>
- <td width=88%>[E] Use of the sizeof operator in a preprocessing directive is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1029</td>
- <td width=88%>[E] Whitespace encountered between backslash and new-line has been ignored.</td>
- </tr>
- <tr>
- <td width=12%>qac-1034</td>
- <td width=88%>[E] Macro defined with named variable argument list. This is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1035</td>
- <td width=88%>[E] No macro arguments supplied for variable argument list. This is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1036</td>
- <td width=88%>[E] Comma before ## ignored in expansion of variadic macro. This is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1037</td>
- <td width=88%>[E] Arrays of length zero are a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1038</td>
- <td width=88%>[E] The sequence ", ##__VA_ARGS__" is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1041</td>
- <td width=88%>[E] Empty aggregate initializers are a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1042</td>
- <td width=88%>[E] Using I64 or UI64 as an integer constant suffix. This is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1043</td>
- <td width=88%>[E] Defining an anonymous union object. This is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1044</td>
- <td width=88%>[E] Defining an anonymous struct object. This is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1045</td>
- <td width=88%>[E] Use of the #include_next preprocessing directive is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1046</td>
- <td width=88%>[E] Function is being declared with default argument syntax. This is a language extension.</td>
- </tr>
- <tr>
- <td width=12%>qac-1434</td>
- <td width=88%>[I] This enum constant is not representable in a 16 bit integer type.</td>
- </tr>
- <tr>
- <td width=12%>qac-3664</td>
- <td width=88%>[E] Using a dot operator to access an individual bit is a language extension.</td>
- </tr>
-</table></center>
-</td>
- </tr>
- <tr>
- <td width=2%>MSC15</td>
- <td width=2%>Recommendation</td>
- <td width=40%>Do not depend on undefined behavior</td>
- <td><center><table width=100%>
- <tr><th>Qac</th><th>Description</th></tr>
- <tr>
- <td width=12%>qac-0160</td>
- <td width=88%>[U] Using unsupported conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0161</td>
- <td width=88%>[U] Unknown length modifier used with 'i' or 'd' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0162</td>
- <td width=88%>[U] Unknown length modifier used with 'o' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0163</td>
- <td width=88%>[U] Unknown length modifier used with 'u' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0164</td>
- <td width=88%>[U] Unknown length modifier used with 'x' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0165</td>
- <td width=88%>[U] Unknown length modifier used with 'X' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0166</td>
- <td width=88%>[U] Unknown length modifier used with 'f' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0167</td>
- <td width=88%>[U] Unknown length modifier used with 'e' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0168</td>
- <td width=88%>[U] Unknown length modifier used with 'E' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0169</td>
- <td width=88%>[U] Unknown length modifier used with 'g' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0170</td>
- <td width=88%>[U] Unknown length modifier used with 'G' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0171</td>
- <td width=88%>[U] Unknown length modifier used with 'c' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0172</td>
- <td width=88%>[U] Unknown length modifier used with '%%' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0173</td>
- <td width=88%>[U] Unknown length modifier used with 's' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0174</td>
- <td width=88%>[U] Unknown length modifier used with 'n' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0175</td>
- <td width=88%>[U] Unknown length modifier used with 'p' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0176</td>
- <td width=88%>[U] Incomplete conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0177</td>
- <td width=88%>[U] Field width of format conversion specifier exceeds 509 characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0178</td>
- <td width=88%>[U] Precision of format conversion specifier exceeds 509 characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0179</td>
- <td width=88%>[U] Argument type does not match conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0184</td>
- <td width=88%>[U] Insufficient arguments to satisfy conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0185</td>
- <td width=88%>[U] Call contains more arguments than conversion specifiers.</td>
- </tr>
- <tr>
- <td width=12%>qac-0186</td>
- <td width=88%>[U] A call to this function must include at least one argument.</td>
- </tr>
- <tr>
- <td width=12%>qac-0190</td>
- <td width=88%>[U] Using unsupported conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0191</td>
- <td width=88%>[U] Unknown length modifier used with 'd/i/n' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0192</td>
- <td width=88%>[U] Unknown length modifier used with 'o' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0193</td>
- <td width=88%>[U] Unknown length modifier used with 'u' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0194</td>
- <td width=88%>[U] Unknown length modifier used with 'x/X' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0195</td>
- <td width=88%>[U] Unknown length modifier used with 'e/E/f/F/g/G' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0196</td>
- <td width=88%>[U] Unknown length modifier used with 's' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0197</td>
- <td width=88%>[U] Unknown length modifier used with 'p' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0198</td>
- <td width=88%>[U] Unknown length modifier used with '%%' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0199</td>
- <td width=88%>[U] Unknown length modifier used with '[' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0200</td>
- <td width=88%>[U] Unknown length modifier used with 'c' conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0201</td>
- <td width=88%>[U] Incomplete conversion specifier, number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0203</td>
- <td width=88%>[U] Value of character prior to '-' in '[]' is greater than following character.</td>
- </tr>
- <tr>
- <td width=12%>qac-0204</td>
- <td width=88%>[U] Field width of format conversion specifier exceeds 509 characters.</td>
- </tr>
- <tr>
- <td width=12%>qac-0206</td>
- <td width=88%>[U] Argument type does not match conversion specifier number %1s.</td>
- </tr>
- <tr>
- <td width=12%>qac-0207</td>
- <td width=88%>[U] 'scanf' expects address of objects being stored into.</td>
- </tr>
- <tr>
- <td width=12%>qac-0208</td>
- <td width=88%>[U] Same character occurs in scanset more than once.</td>
- </tr>
- <tr>
- <td width=12%>qac-0235</td>
- <td width=88%>[U] Unknown escape sequence.</td>
- </tr>
- <tr>
- <td width=12%>qac-0275</td>
- <td width=88%>[U] Floating value is out of range for conversion to destination type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0301</td>
- <td width=88%>[u] Cast between a pointer to object and a floating type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0302</td>
- <td width=88%>[u] Cast between a pointer to function and a floating type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0304</td>
- <td width=88%>[U] The address of an array declared 'register' may not be computed.</td>
- </tr>
- <tr>
- <td width=12%>qac-0307</td>
- <td width=88%>[u] Cast between a pointer to object and a pointer to function.</td>
- </tr>
- <tr>
- <td width=12%>qac-0309</td>
- <td width=88%>[U] Integral type is not large enough to hold a pointer value.</td>
- </tr>
- <tr>
- <td width=12%>qac-0323</td>
- <td width=88%>[C] Cast between a pointer to incomplete type and a floating type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0327</td>
- <td width=88%>[C] Cast between a pointer to void and a floating type.</td>
- </tr>
- <tr>
- <td width=12%>qac-0337</td>
- <td width=88%>[U] String literal has undefined value. This may be a result of using '#' on \\.</td>
- </tr>
- <tr>
- <td width=12%>qac-0400</td>
- <td width=88%>[U] '%1s' is modified more than once between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0401</td>
- <td width=88%>[U] '%1s' may be modified more than once between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0402</td>
- <td width=88%>[U] '%1s' is modified and accessed between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0403</td>
- <td width=88%>[U] '%1s' may be modified and accessed between sequence points - evaluation order unspecified.</td>
- </tr>
- <tr>
- <td width=12%>qac-0475</td>
- <td width=88%>[u] Operand of 'sizeof' is an expression designating a bit-field.</td>
- </tr>
- <tr>
- <td width=12%>qac-0543</td>
- <td width=88%>[U] 'void' expressions have no value and may not be used in expressions.</td>
- </tr>
- <tr>
- <td width=12%>qac-0544</td>
- <td width=88%>[U] The value of an incomplete 'union' may not be used.</td>
- </tr>
- <tr>
- <td width=12%>qac-0545</td>
- <td width=88%>[U] The value of an incomplete 'struct' may not be used.</td>
- </tr>
- <tr>
- <td width=12%>qac-0602</td>
- <td width=88%>[U] The identifier '%1s' is reserved for use by the library.</td>
- </tr>
- <tr>
- <td width=12%>qac-0603</td>
- <td width=88%>[U] The macro identifier '%1s' is reserved.</td>
- </tr>
- <tr>
- <td width=12%>qac-0623</td>
- <td width=88%>[U] '%s' has incomplete type and no linkage - this is undefined.</td>
- </tr>
- <tr>
- <td width=12%>qac-0625</td>
- <td width=88%>[U] '%s' has been declared with both internal and external linkage - the behaviour is undefined.</td>
- </tr>
- <tr>
- <td width=12%>qac-0626</td>
- <td width=88%>[U] '%s' has different type to previous declaration (which is no longer in scope).</td>
- </tr>
- <tr>
- <td width=12%>qac-0630</td>
- <td width=88%>[U] More than one definition of '%s' (with external linkage).</td>
- </tr>
- <tr>
- <td width=12%>qac-0632</td>
- <td width=88%>[U] Tentative definition of '%s' with internal linkage cannot have unknown size.</td>
- </tr>
- <tr>
- <td width=12%>qac-0636</td>
- <td width=88%>[U] There are no named members in this 'struct' or 'union'.</td>
- </tr>
- <tr>
- <td width=12%>qac-0658</td>
- <td width=88%>[U] Parameter cannot have 'voidWhy this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.