A list of all currently implemented checks in C-STAT
Version: 2.10.2.648


===============================
Checks
===============================

CheckName=ARR-inv-index-pos
Package=STDCHECKS
Group=ARR
CheckSynopsis="An array access might be out of bounds, depending on which path is executed."
LongDesc="An element of an array is accessed, but one or more of the executable paths means that the element is outside the bounds of the array. This might corrupt data and/or crash the application, and result in security vulnerabilities."
Severity=High
IdenticalTo=MISRAC++2008-5-0-16_d MISRAC2012-Rule-18.1_b CERT-ARR30-C_b
Default=on
Visible=Yes

CheckName=ARR-inv-index-ptr-pos
Package=STDCHECKS
Group=ARR
CheckSynopsis="A pointer to an array is potentially used outside the array bounds."
LongDesc="A pointer to an array is potentially used outside the array bounds. This might cause an invalid memory access, and might be a serious security risk. The application might also crash."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-16_f MISRAC2012-Rule-18.1_d CERT-ARR30-C_d
Default=on
Visible=Yes

CheckName=ARR-inv-index-ptr
Package=STDCHECKS
Group=ARR
CheckSynopsis="A pointer to an array is used outside the array bounds."
LongDesc="A pointer to an array is used outside the array bounds. This will cause an invalid memory access, and might be a serious security risk. The application might also crash."
Severity=High
IdenticalTo=MISRAC++2008-5-0-16_e MISRAC2012-Rule-18.1_c CERT-ARR30-C_c
Default=on
Visible=Yes

CheckName=ARR-inv-index
Package=STDCHECKS
Group=ARR
CheckSynopsis="An array access is out of bounds."
LongDesc="An element of an array is accessed when that element is outside the bounds of the array. This might corrupt data and/or crash the application, and result in security vulnerabilities."
Severity=High
IdenticalTo=MISRAC++2008-5-0-16_c MISRAC2012-Rule-18.1_a CERT-ARR30-C_a
Default=on
Visible=Yes

CheckName=ARR-neg-index
Package=STDCHECKS
Group=ARR
CheckSynopsis="An array is accessed with a negative subscript value."
LongDesc="An array is accessed with a negative subscript value, causing an illegal memory access. This might corrupt data and/or crash the application, and result in security vulnerabilities."
Severity=High
IdenticalTo=CERT-ARR30-C_e
Default=on
Visible=Yes

CheckName=ARR-uninit-index
Package=STDCHECKS
Group=ARR
CheckSynopsis="An array is indexed with an uninitialized variable"
LongDesc="An array is indexed with an uninitialized variable. The value of the variable is not defined, which might cause an array overrun."
Severity=Medium
IdenticalTo=CERT-ARR30-C_f
Default=on
Visible=Yes

CheckName=ATH-cmp-float
Package=STDCHECKS
Group=ATH
CheckSynopsis="Floating point comparisons using == or !="
LongDesc="A comparison for equality with a floating-point type uses the == or != operator. This might have an unexpected result because the value of the float varies with the environment and the operation. The comparison might be evaluated incorrectly, especially if either of the floating-point numbers has been operated on arithmetically. In that case, the application logic will be compromised."
Severity=Low
IdenticalTo=MISRAC2004-13.3 MISRAC++2008-6-2-2
Default=on
Visible=Yes

CheckName=ATH-cmp-unsign-neg
Package=STDCHECKS
Group=ATH
CheckSynopsis="An unsigned value is compared to see whether it is negative."
LongDesc="A comparison is performed on an unsigned value, to see whether it is negative. This comparison always returns false, and is redundant."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=ATH-cmp-unsign-pos
Package=STDCHECKS
Group=ATH
CheckSynopsis="An unsigned value is compared to see whether it is greater than or equal to 0."
LongDesc="A comparison is performed on an unsigned value, to see whether it is greater than or equal to 0. This comparison always returns true, and is redundant."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=ATH-div-0-assign
Package=STDCHECKS
Group=ATH
CheckSynopsis="A variable is assigned the value 0, then used as a divisor."
LongDesc="A variable is assigned the value 0, then used as a divisor. This will cause a 'divide by zero' runtime error."
Severity=High
IdenticalTo=MISRAC2004-1.2_d MISRAC2012-Rule-1.3_b CERT-INT33-C_a
Default=on
Visible=Yes

CheckName=ATH-div-0-cmp-aft
Package=STDCHECKS
Group=ATH
CheckSynopsis="After a successful comparison with 0, a variable is used as a divisor."
LongDesc="A variable is successfully compared to 0, then used as a divisor.  This will cause a 'divide by zero' runtime error."
Severity=Medium
IdenticalTo=MISRAC2004-1.2_e MISRAC2012-Rule-1.3_c SEC-DIV-0-compare-after CERT-INT33-C_b
Default=off
Visible=Yes

CheckName=ATH-div-0-cmp-bef
Package=STDCHECKS
Group=ATH
CheckSynopsis="A variable used as a divisor is afterwards compared with 0."
LongDesc=" A variable is compared to 0 after it is used as a divisor, but before it is written to again.  This implies that the variable's value might be 0, and might have been for the preceding statements. Because one of these statements is an operation that uses the variable as a divisor (causing a 'divide by zero' runtime error), the execution can never reach the comparison when the value is 0, making it redundant. "
Severity=Low
IdenticalTo=MISRAC2004-1.2_f MISRAC2012-Rule-1.3_d SEC-DIV-0-compare-before CERT-INT33-C_c
Default=on
Visible=Yes

CheckName=ATH-div-0-interval
Package=STDCHECKS
Group=ATH
CheckSynopsis="Interval analysis has found a value that is 0 and used as a divisor."
LongDesc="Interval analysis has found a value that is 0 and used as a divisor. This might cause a 'divide by zero' runtime error."
Severity=Medium
IdenticalTo=MISRAC2004-1.2_g MISRAC2012-Rule-1.3_e CERT-INT33-C_d
Default=on
Visible=Yes

CheckName=ATH-div-0-pos
Package=STDCHECKS
Group=ATH
CheckSynopsis="Interval analysis has found an expression that might be 0 and is used as a divisor."
LongDesc="Interval analysis has found an expression that contains 0 and is used as a divisor. This might cause a 'divide by zero' runtime error."
Severity=High
IdenticalTo=MISRAC2004-1.2_h MISRAC2012-Rule-1.3_f CERT-INT33-C_e
Default=on
Visible=Yes

CheckName=ATH-div-0-unchk-global
Package=STDCHECKS
Group=ATH
CheckSynopsis="A global variable is used as a divisor without having been determined to be non-zero."
LongDesc="A global variable is used as a divisor without having been determined to be non-zero.  This will cause a 'divide by zero' runtime error if the variable has a value of 0."
Severity=Medium
IdenticalTo=MISRAC2004-1.2_i MISRAC2012-Rule-1.3_g CERT-INT33-C_f
Default=on
Visible=Yes

CheckName=ATH-div-0-unchk-local
Package=STDCHECKS
Group=ATH
CheckSynopsis="A local variable is used as a divisor without having been determined to be non-zero."
LongDesc="A local variable is used as a divisor without having been determined to be non-zero.  This will cause a 'divide by zero' runtime error if the variable has a value of 0."
Severity=Medium
IdenticalTo=MISRAC2004-1.2_j MISRAC2012-Rule-1.3_h CERT-INT33-C_g
Default=on
Visible=Yes

CheckName=ATH-div-0-unchk-param
Package=STDCHECKS
Group=ATH
CheckSynopsis="A parameter is used as a divisor without having been determined to be non-zero."
LongDesc="A parameter is used as a divisor without having been determined to be non-zero.  This will cause a 'divide by zero' runtime error if the parameter has a value of 0."
Severity=Medium
IdenticalTo=CERT-INT33-C_h
Default=on
Visible=Yes

CheckName=ATH-div-0
Package=STDCHECKS
Group=ATH
CheckSynopsis="An expression that results in 0 is used as a divisor."
LongDesc="An expression that results in 0 is used as a divisor. This will cause a 'divide by zero' runtime error."
Severity=High
IdenticalTo=MISRAC2004-1.2_c MISRAC2012-Rule-1.3_a
Default=on
Visible=Yes

CheckName=ATH-inc-bool
Package=STDCHECKS
Group=ATH
CheckSynopsis="Deprecated operation on bool."
LongDesc="An undefined increment or decrement operation is performed on a bool value.  In older versions of C++, Boolean values were modeled by a typedef to an integer type, allowing increment and decrement operations. These types are deprecated in Standard C++ and the operations no longer apply to the built-in C++ bool type. "
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=ATH-malloc-overrun
Package=STDCHECKS
Group=ATH
CheckSynopsis="The size of memory passed to malloc to allocate overflows."
LongDesc="The size of memory passed to malloc to allocate is the result of an arithmetic overflow. As a result, malloc will not allocate the expected amount of memory and accesses to this memory might cause runtime errors."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=ATH-neg-check-nonneg
Package=STDCHECKS
Group=ATH
CheckSynopsis="A variable is checked for a non-negative value after being used, instead of before."
LongDesc="A function parameter or index is used in a context that implicitly asserts that it is not negative, but it is not determined to be non-negative until after it is used. If the value actually is negative when the variable is used, data might be corrupted, the application might crash, or a security vulnerability might be exposed."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=ATH-neg-check-pos
Package=STDCHECKS
Group=ATH
CheckSynopsis="A variable is checked for a positive value after being used, instead of before."
LongDesc="A function parameter or index is used in a context that implicitly asserts that it is positive, but it is not compared to 0 until after it is used. If the value actually is negative or 0 when the variable is used, data might be corrupted, the application might crash, or a security vulnerability might be exposed."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=ATH-new-overrun
Package=STDCHECKS
Group=ATH
CheckSynopsis="An arithmetic overflow is caused by an allocation using new[]."
LongDesc="The new a[n] operator performs the operation sizeof(a) * n. This might cause an overflow, leading to an unexpected amount of memory being allocated. Dereferencing this memory might lead to a runtime error."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=ATH-overflow-cast
Package=STDCHECKS
Group=ATH
CheckSynopsis="An expression is cast to a different type, resulting in an overflow or underflow of its value."
LongDesc="An expression is cast to a different type, resulting in an overflow or underflow of its value. This might be unintended and can cause logic errors. Because unexpected behavior is much more likely than an application crash, such errors can be very hard to find."
Severity=Medium
IdenticalTo=CERT-INT31-C_a
Default=off
Visible=Yes

CheckName=ATH-overflow
Package=STDCHECKS
Group=ATH
CheckSynopsis="An expression is implicitly converted to a narrower type, resulting in an overflow or underflow of its value."
LongDesc="An expression is implicitly converted to a narrower type, resulting in an overflow or underflow of its value. This might be unintended and can cause logic errors. Because unexpected behavior is much more likely than an application crash, such errors can be very hard to find."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=ATH-shift-bounds
Package=STDCHECKS
Group=ATH
CheckSynopsis="Out of range shifts were found."
LongDesc="The right-hand operand of a shift operator might be negative or too large. A shift operator on an n-bit argument should only shift between 0 and n-1 bits.  The behavior here is undefined; the code might work as intended, or data could become erroneous."
Severity=Medium
IdenticalTo=MISRAC2004-12.8 MISRAC++2008-5-8-1 MISRAC2012-Rule-12.2
Default=on
Visible=Yes

CheckName=ATH-shift-neg
Package=STDCHECKS
Group=ATH
CheckSynopsis="The left-hand side of a right shift operation might be a negative value."
LongDesc="The left-hand side of a right shift operation might be a negative value. Because performing a right shift operation on a negative number is implementation-defined, this operation might have unexpected results."
Severity=Medium
IdenticalTo=CERT-INT34-C_c
Default=on
Visible=Yes

CheckName=ATH-sizeof-by-sizeof
Package=STDCHECKS
Group=ATH
CheckSynopsis="Multiplying sizeof by sizeof."
LongDesc="sizeof is multiplied by sizeof. This is probably a programming mistake and might have been intended to be sizeof / sizeof.  This code will not cause any errors, but the product of two sizeof results is not a useful value, and might indicate a misunderstanding of the intended behavior of the code."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CAST-old-style
Package=STDCHECKS
Group=CAST
CheckSynopsis="Old style casts (other than void casts) are used"
LongDesc="Old style casts (other than void casts) are used. These casts override type information about the variables or pointers being cast, which might cause portability problems. A particular cast might for example not be valid on a system, but the compiler will perform the cast anyway. The new style casts static_cast, const_cast, and reinterpret_cast should be used instead because they make clear the intention of the cast. Moreover, the new style casts can easily be searched for in source code files, unlike old style casts."
Severity=Medium
IdenticalTo=MISRAC++2008-5-2-4 MISRAC++2023-8.2.2
Default=off
Visible=Yes

CheckName=CATCH-object-slicing
Package=STDCHECKS
Group=CATCH
CheckSynopsis="Exception objects are caught by value"
LongDesc="Class type exception objects are caught by value, leading to slicing. That is, if the exception object is of a derived class and is caught as the base, only the base class's functions (including virtual functions) can be called. Moreover, any additional member data in the derived class cannot be accessed.  If the exception is instead caught by reference, slicing does not occur. "
Severity=Medium
IdenticalTo=MISRAC++2008-15-3-5 MISRAC++2023-18.3.2
Default=on
Visible=Yes

CheckName=CATCH-xtor-bad-member
Package=STDCHECKS
Group=CATCH
CheckSynopsis="Exception handler in constructor or destructor accesses non-static member variable that might not exist."
LongDesc="The exception handler in a constructor or destructor accesses a non-static member function. Such members might or might not exist at this point in construction/destruction and accessing them might result in undefined behavior."
Severity=Medium
IdenticalTo=MISRAC++2008-15-3-3 MISRAC++2023-18.3.3
Default=off
Visible=Yes

CheckName=COMMA-overload
Package=STDCHECKS
Group=COMMA
CheckSynopsis="Overloaded comma operator"
LongDesc="There are overloaded versions of the comma and logical conjunction operators. These have the semantics of function calls whose sequence point and ordering semantics are different from those of the built-in versions. Because it might not be clear at the point of use that these operators are overloaded, developers might be unaware which semantics apply. "
Severity=Low
IdenticalTo=MISRAC++2008-5-2-11_b
Default=off
Visible=Yes

CheckName=COMMENT-nested
Package=STDCHECKS
Group=COMMENT
CheckSynopsis="Appearances of /* inside comments"
LongDesc="Appearances of /* inside comments. C does not support nesting of comments. This can cause confusion when some code does not execute as expected. For example:  /* A comment, end comment marker accidentally omitted <<New Page>> initialize(X); /* this comment is not compliant */  In this case, X will not be initialized because the code is hidden in a comment."
Severity=Low
IdenticalTo=MISRAC2004-2.3 MISRAC++2008-2-7-1 MISRAC++2023-5.7.1
Default=on
Visible=Yes

CheckName=CONCURRENCY-double-lock
Package=STDCHECKS
Group=CONCURRENCY
CheckSynopsis="A mutex is locked twice without first being unlocked"
LongDesc="A mutex is locked twice without being unlocked in between. This will cause a deadlock at runtime."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=CONCURRENCY-double-unlock
Package=STDCHECKS
Group=CONCURRENCY
CheckSynopsis="A mutex is unlocked twice, without first being locked."
LongDesc="A mutex is unlocked twice, without being locked in between."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=CONCURRENCY-lock-no-unlock
Package=STDCHECKS
Group=CONCURRENCY
CheckSynopsis="A mutex is locked, but not unlocked"
LongDesc="A mutex is locked and then never released. This might cause a deadlock."
Severity=High
IdenticalTo=
Default=off
Visible=No

CheckName=CONCURRENCY-sleep-while-locking
Package=STDCHECKS
Group=CONCURRENCY
CheckSynopsis="A function calls a blocking mechanism while holding a lock"
LongDesc="A function calls a blocking mechanism while holding a lock."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=CONST-member-ret
Package=STDCHECKS
Group=CONST
CheckSynopsis="A member function qualified as const returns a pointer member variable."
LongDesc="A member function qualified as const returns a pointer member variable. This might violate the semantics of the function's const qualification, as the data at that address might be overwritten, or the memory itself might be freed.  This will not be identified by a compiler, because the pointer being returned is a copy even though the memory to which it refers is vulnerable."
Severity=Medium
IdenticalTo=MISRAC++2008-9-3-1
Default=on
Visible=Yes

CheckName=COP-alloc-ctor
Package=STDCHECKS
Group=COP
CheckSynopsis="A class member is deallocated in the class' destructor, but not allocated in a constructor or assignment operator."
LongDesc="A class member is deallocated in the class' destructor but is not allocated in a constructor or assignment operator (operator=).  Even if this is intentional (and the class' pointer attributes are allocated elsewhere) it is still dangerous, because it subverts the Resource Acquisition is Initialization convention, and consequently users of the class might accidentally misuse it."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=COP-assign-op-ret
Package=STDCHECKS
Group=COP
CheckSynopsis="An assignment operator of a C++ class does not return a non-const reference to this."
LongDesc="An assignment operator of a C++ class is incorrectly defined. Probably it does not return a non-const reference to the left-hand side of the assignment. This can cause unexpected behavior in situations where the assignment is chained with others, or the return value is used as a left-hand side argument to a subsequent assignment.  A non-const reference as the return type should be used because it is the convention; it will not achieve any added code safety, and it makes the assignment operator more restrictive.  "
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=COP-assign-op-self
Package=STDCHECKS
Group=COP
CheckSynopsis="Assignment operator does not check for self-assignment before allocating member functions"
LongDesc="An assignment operator does not check for self-assignment before allocating member functions. If self-assignment occurs in a user-defined object which uses dynamic memory allocation, references to allocated memory will be lost if they are reassigned.  This will most likely cause a memory leak, as well as unexpected results, because the objects referred to by any pointers are lost."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=COP-assign-op
Package=STDCHECKS
Group=COP
CheckSynopsis="There is no assignment operator defined for a class whose destructor deallocates memory."
LongDesc="There is no assignment operator defined for a class whose destructor deallocates memory, so the compiler's synthesized assignment operator will be created and used if needed. This will only perform shallow copies of any pointer values, meaning that multiple instances of a class might inadvertently contain pointers to the same memory.  Although a synthesized assignment operator might be adequate and appropriate for classes whose members include only (non-pointer) built-in types, in a class that dynamically allocates memory it could easily lead to unexpected behavior or attempts to access freed memory. In that case, if a copy is made and one of the two is destroyed, any deallocated pointers in the other will become invalid.  This check should only be selected if all of a class' copy control functions are defined in the same file."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=COP-copy-ctor
Package=STDCHECKS
Group=COP
CheckSynopsis="A class which uses dynamic memory allocation does not have a user-defined copy constructor."
LongDesc="A class which uses dynamic memory allocation does not have a user-defined copy constructor, so the compiler's synthesized copy constructor will be created and used if needed. This will only perform shallow copies of any pointer values, meaning that multiple instances of a class might inadvertently contain pointers to the same memory.  Although a synthesized copy constructor might be adequate and appropriate for classes whose members include only (non-pointer) built-in types, in a class that dynamically allocates memory, it might easily lead to unexpected behavior or attempts to access freed memory. In that case, if a copy is made and one of the two is destroyed, any deallocated pointers in the other will become invalid.  This check should only be selected if all of a class' copy control functions are defined in the same file."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=COP-dealloc-dtor
Package=STDCHECKS
Group=COP
CheckSynopsis="A class member has memory allocated in a constructor or an assignment operator, that is not released in the destructor."
LongDesc="A class member has memory allocated to it in a constructor or assignment operator, that is not released in the class' destructor. This will most likely cause a memory leak when objects of this class are created and destroyed.  Even if this is intentional (and the memory is released elsewhere) it is still dangerous, because it subverts the Resource Acquisition is Initialization convention, and consequently users of the class might not release the memory at all."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=COP-dtor-throw
Package=STDCHECKS
Group=COP
CheckSynopsis="An exception is thrown, or might be thrown, in a class destructor."
LongDesc="An exception is thrown, or might be thrown, in a class destructor. When the destructor is called, stack unwinding takes place. If an exception is thrown at this time, the application will crash."
Severity=Medium
IdenticalTo=MISRAC++2008-15-5-1
Default=on
Visible=Yes

CheckName=COP-dtor
Package=STDCHECKS
Group=COP
CheckSynopsis="A class which dynamically allocates memory in its copy control functions does not have a destructor."
LongDesc="A class which dynamically allocates memory in its copy control functions does not have a destructor. This will most likely result in a memory leak. If memory is dynamically allocated in the constructors or assignment operators, there must be a matching destructor to free it. If a destructor is not defined, the compiler will synthesize one, which will destroy any pointers but will not release their contents back to the heap.  Even if this is intentional (and the memory is released elsewhere) it is still dangerous, because it subverts the Resource Acquisition is Initialization convention, and consequently users of the class might not release the memory at all.  This check should only be used if all of a class' copy control functions are defined in the same file."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=COP-init-order
Package=STDCHECKS
Group=COP
CheckSynopsis="Data members are initialized with other data members that are in the same initialization list."
LongDesc="Data members are initialized with other data members that are in the same initialization list. This can cause confusion, and might produce incorrect output, because data members are initialized in order of their declaration and not in the order of the initialization list."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=COP-init-uninit
Package=STDCHECKS
Group=COP
CheckSynopsis="An initializer list reads the values of still uninitialized members."
LongDesc="The expressions used to initialize a class member contain other class members, that have not yet been initialized themselves. The order in which they are initialized depends on the order of their declarations in the class definition and not on the order in which the members appear in the list, which might feel counter-intuitive.  This might cause some of the object's attributes to have incorrect values, leading to logic errors or an application crash if the class handles dynamic memory."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=COP-member-uninit
Package=STDCHECKS
Group=COP
CheckSynopsis="A member of a class is not initialized in one of the class constructors."
LongDesc="A member of a class is not initialized in one of the class constructors. This might cause unexpected or unpredictable program behavior, and can be very difficult to identify as the cause.  Because members of built-in types are not given a default initialization, constructors must initialize all members of a class.  Even if this is intentional (and the attribute is initialized elsewhere) it is still dangerous, because it subverts the Resource Acquisition is Initialization convention, and consequently users of the class might not initialize the attribute.  Uninitialized data can lead to incorrect program flow, and might cause the application to crash if the class handles dynamic memory."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CPU-ctor-call-virt
Package=STDCHECKS
Group=CPU
CheckSynopsis="A virtual member function is called in a class constructor."
LongDesc="When an instance is constructed, the virtual member function of its base class is called, rather than the function of the actual class being constructed.  This might result in the incorrect function being called, and consequently incorrect data or uninitialized elements."
Severity=Medium
IdenticalTo=MISRAC++2008-12-1-1_a MISRAC++2023-15.1.1_a
Default=on
Visible=Yes

CheckName=CPU-ctor-implicit
Package=STDCHECKS
Group=CPU
CheckSynopsis="Constructors that are callable with a single argument are not declared explicit. Conversion operators shall also be set explicit."
LongDesc="Constructors that are callable with a single argument are not declared explicit. This means that nothing prevents the constructor from being used to implicitly convert from a fundamental type to the class type."
Severity=Low
IdenticalTo=MISRAC++2008-12-1-3 MISRAC++2023-15.1.3
Default=off
Visible=Yes

CheckName=CPU-delete-throw
Package=STDCHECKS
Group=CPU
CheckSynopsis="An exception is thrown, or might be thrown, in an overloaded delete or delete[] operator."
LongDesc="An exception is thrown, or might be thrown, in an overloaded delete or delete[] operator. Because memory is often deallocated in a destructor, an exception that is thrown in a delete or delete[] operator is likely to be thrown during stack unwinding, which will cause the application to crash."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CPU-delete-void
Package=STDCHECKS
Group=CPU
CheckSynopsis="A pointer to void is used in delete, causing the destructor not to be called."
LongDesc="A pointer to void is used in delete. When delete is called on a void pointer in C++, the object is deallocated from memory but its destructor is not called."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CPU-dtor-call-virt
Package=STDCHECKS
Group=CPU
CheckSynopsis="A virtual member function is called in a class destructor."
LongDesc="When an instance is destroyed, the virtual member function of its base class is called, rather than the function of the actual class being destroyed.  This might result in the incorrect function being called, and consequently dynamic memory might not be properly deallocated, or some other unwanted behavior might occur."
Severity=Medium
IdenticalTo=MISRAC++2008-12-1-1_b MISRAC++2023-15.1.1_b
Default=on
Visible=Yes

CheckName=CPU-malloc-class
Package=STDCHECKS
Group=CPU
CheckSynopsis="An allocation of a class instance with malloc() does not call a constructor."
LongDesc="When allocating memory for a class instance with malloc(), no class constructor is called. Using malloc() creates an uninitialized object.  To initialize the object at allocation, use the new operator"
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CPU-nonvirt-dtor
Package=STDCHECKS
Group=CPU
CheckSynopsis="A public non-virtual destructor is defined in a class with virtual methods."
LongDesc="A public non-virtual destructor is defined in a class with virtual methods.  Calling delete on a pointer to any class derived from this one might call the wrong destructor.  If any class might be a base class (by having virtual methods), then its destructor should be either be virtual or protected so that callers cannot destroy derived objects via pointers to the base."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CPU-return-ref-to-class-data
Package=STDCHECKS
Group=CPU
CheckSynopsis="Member functions return non-const handles to members."
LongDesc="Member functions return non-const handles to members. Implement class interfaces with member functions to retain more control over how the object state can be modified and to make it easier to maintain a class without affecting clients. Returning a handle to class-data allows clients to modify the state of the object without using any interfaces."
Severity=Medium
IdenticalTo=MISRAC++2008-9-3-2
Default=on
Visible=Yes

CheckName=DECL-implicit-int
Package=STDCHECKS
Group=DECL
CheckSynopsis="An object or function of the type int is declared or defined, but its type is not explicitly stated."
LongDesc="An object or function of the type int is declared or defined, but its type is not explicitly stated. The type of an object or function must be explicitly stated."
Severity=Medium
IdenticalTo=MISRAC2004-8.2 MISRAC2012-Rule-8.1
Default=off
Visible=Yes

CheckName=DEFINE-hash-multiple
Package=STDCHECKS
Group=DEFINE
CheckSynopsis="Multiple # or ## operators in a macro definition."
LongDesc="The order of evaluation associated with both the # and ## preprocessor operators is unspecified. Avoid this problem by having only one occurrence of either operator in any single macro definition (i.e. one #, or one ##, or neither). "
Severity=Medium
IdenticalTo=MISRAC2004-19.12 MISRAC++2008-16-3-1
Default=on
Visible=Yes

CheckName=ENUM-bounds
Package=STDCHECKS
Group=ENUM
CheckSynopsis="Conversions to enum that are out of range of the enumeration."
LongDesc="There are conversions to enum that are out of range of the enumeration."
Severity=Medium
IdenticalTo=MISRAC++2008-7-2-1
Default=off
Visible=Yes

CheckName=EXP-cond-assign
Package=STDCHECKS
Group=EXP
CheckSynopsis="An assignment might be mistakenly used as the condition for an if, for, while, or do statement."
LongDesc="An assignment might be mistakenly used as the condition for an if, for, while, or do statement. This condition will either always or never hold, depending on the value of the second operand. This was most likely intended to be a comparison, not an assignment.  This might cause incorrect program flow, and possibly an infinite loop."
Severity=Low
IdenticalTo=MISRAC2012-Rule-13.4_a
Default=on
Visible=Yes

CheckName=EXP-dangling-else
Package=STDCHECKS
Group=EXP
CheckSynopsis="An else branch might be connected to an unexpected if statement."
LongDesc="An else branch might be connected to an unexpected if statement. An else branch is always connected with the closest possible if statement, but this might not always be the intention of the programmer.  By explicitly putting braces around if statements where there might be ambiguity, you make the code more readable and your intentions clearer."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=EXP-loop-exit
Package=STDCHECKS
Group=EXP
CheckSynopsis="An unconditional break, continue, return, or goto within a loop."
LongDesc="There is an unconditional break, goto, continue or return in a loop.  This means that some iterations of the loop will never be executed. This is most likely not the intended behavior."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=EXP-main-ret-int
Package=STDCHECKS
Group=EXP
CheckSynopsis="The return type of main() is not int."
LongDesc="The return type of the main function is not int. The main function is expected to return an integer, so that the caller of the application can determine whether the application executed successfully or failed."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=EXP-null-stmt
Package=STDCHECKS
Group=EXP
CheckSynopsis="The body of an if, while, or for statement is a null statement."
LongDesc="The body of an if, while, or for statement is a null statement. This might be intentional (a placeholder), but because a null statement as the body is difficult to find when debugging or reviewing code, it is good practice to use an empty block to identify a stub body.  Note that if the condition expression of a for loop has possible side-effects, or if an if statement has a null body but carries an else clause, this check will not give a warning."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=EXP-stray-semicolon
Package=STDCHECKS
Group=EXP
CheckSynopsis="Stray semicolons on the same line as other code"
LongDesc="There are stray semicolons on the same line as other code. Before preprocessing, a null statement should only be on a line by itself; it can be followed by a comment only if the first character following the null statement is a whitespace character. "
Severity=Low
IdenticalTo=MISRAC2004-14.3 MISRAC++2008-6-2-3
Default=off
Visible=Yes

CheckName=EXPR-const-overflow
Package=STDCHECKS
Group=EXPR
CheckSynopsis="A constant unsigned integer expression overflows."
LongDesc="A constant unsigned integer expression overflows."
Severity=Medium
IdenticalTo=MISRAC2004-12.11 MISRAC++2008-5-19-1 MISRAC2012-Rule-12.4 MISRAC++2023-8.20.1
Default=on
Visible=Yes

CheckName=FPT-arith-address
Package=STDCHECKS
Group=FPT
CheckSynopsis="Pointer arithmetic is performed on the address of a function."
LongDesc="Pointer arithmetic is performed on the address of a function. This might result in the use of a pointer to a memory location which is an offset of the location of a function. The contents of memory at an offset of a function location are not defined, and access to this memory is illegal.  Because valid function addresses can only come from an existing, defined function, there is no guarantee of a relationship the addresses of multiple functions, or of the values of any of these addresses at all.  Thus performing any kind of arithmetic on a function pointer is almost certainly an error.  Using the result of this arithmetic operation might cause the application to crash, or the result could point to junk data in memory, which is then interpreted as instructions."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=FPT-arith
Package=STDCHECKS
Group=FPT
CheckSynopsis="Pointer arithmetic is performed on a pointer to a function."
LongDesc="Pointer arithmetic is performed on a pointer to a function. This might result in the use of a pointer to a memory location which is an offset of the location of a function. The contents of memory at an offset of a function location are not defined, and access to this memory is illegal.  Because valid function addresses can only come from using the & (address of) operator on an existing, defined function, there is no guarantee of a relationship between the addresses of multiple functions, or of the values of any of these addresses at all. Thus performing any kind of arithmetic on a function pointer is almost certainly an error.  Using the result of this arithmetic operation might cause the application to crash, or the result could point to junk data in memory, which is then interpreted as instructions."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=FPT-cmp-null
Package=STDCHECKS
Group=FPT
CheckSynopsis="The address of a function is compared with NULL."
LongDesc="The address of a function is compared with NULL. This is incorrect, because the address of a function is never NULL.  If the intention was to call the function, but the parentheses were accidentally omitted, the application might behave unexpectedly because the address of the function is checked, not the return value. This means that the condition always holds, and any of the function's side-effects will not occur.  If this was intentional, it is an unnecessary comparison, because a function address will never be NULL. If the function is declared but not defined, its address might fail to link if the function is called."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=FPT-literal
Package=STDCHECKS
Group=FPT
CheckSynopsis="A function pointer that refers to a literal address is dereferenced."
LongDesc="A function pointer that refers to a literal address is dereferenced. A literal address is always invalid as a function pointer, and dereferencing it is an illegal memory access that might cause the application to crash."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=FPT-misuse
Package=STDCHECKS
Group=FPT
CheckSynopsis="A function pointer is used in an invalid context."
LongDesc="A function pointer is used in an invalid context. It is an error to use a function pointer to do anything other than calling the function being pointed to, comparing the function pointer to another pointer using != or ==, passing the function pointer to a function, returning the function pointer from a function, or storing the function pointer in a data structure.  Misusing a function pointer might result in erroneous behavior, and in junk data being interpreted as instructions and being executed as such."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=FUNC-implicit-decl
Package=STDCHECKS
Group=FUNC
CheckSynopsis="Functions are used without prototyping."
LongDesc="Functions are used without prototyping. Functions must be prototyped before use."
Severity=Medium
IdenticalTo=MISRAC2004-8.1 MISRAC2012-Rule-17.3 CERT-DCL31-C
Default=off
Visible=Yes

CheckName=FUNC-unprototyped-all
Package=STDCHECKS
Group=FUNC
CheckSynopsis="Functions are declared with an empty () parameter list that does not form a valid prototype."
LongDesc="Functions are declared with an empty () parameter list that does not form a valid prototype. Functions must be prototyped before use."
Severity=Medium
IdenticalTo=MISRAC2004-16.5 MISRAC2012-Rule-8.2_a
Default=off
Visible=Yes

CheckName=FUNC-unprototyped-used
Package=STDCHECKS
Group=FUNC
CheckSynopsis="Arguments are passed to functions without a valid prototype."
LongDesc="Arguments are passed to functions without a valid prototype. This is permitted in C89, but it is unsafe because it bypasses all type checking."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=INCLUDE-c-file
Package=STDCHECKS
Group=INCLUDE
CheckSynopsis="A .c file includes one or more .c files."
LongDesc="A C file includes one or more C files. C files shall not include other C files."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=INT-use-signed-as-unsigned-pos
Package=STDCHECKS
Group=INT
CheckSynopsis="A negative signed integer is implicitly cast to an unsigned integer."
LongDesc="A negative signed integer is implicitly cast to an unsigned integer. The result of this cast will be a large integer, and using this value might result in unexpected behavior."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=INT-use-signed-as-unsigned
Package=STDCHECKS
Group=INT
CheckSynopsis="A negative signed integer is implicitly cast to an unsigned integer."
LongDesc="A negative signed integer is implicitly cast to an unsigned integer. The result of this cast will be a large integer, and using this value might result in unexpected behavior."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=ITR-end-cmp-aft
Package=STDCHECKS
Group=ITR
CheckSynopsis="An iterator is used, then compared with end()"
LongDesc="An iterator is used, then compared with end(). Using an iterator requires that it does not point to the end of a container. Subsequently comparing it with end() or rend() means that it might have been invalid at the point of dereference."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=ITR-end-cmp-bef
Package=STDCHECKS
Group=ITR
CheckSynopsis="An iterator is compared with end() or rend(), then dereferenced."
LongDesc="An iterator is compared with end() or rend(), then dereferenced. Although it is defined behavior for iterators to have a value of end() or rend(), dereferencing them at these values is undefined, and will most likely result in illegal memory access, creating a security vulnerability in the code.  This error can occur if the programmer accidentally uses the wrong comparison operator, for example == instead of !=, or if the then- and else-clauses of an if statement have accidentally changed places."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=ITR-invalidated
Package=STDCHECKS
Group=ITR
CheckSynopsis="An iterator assigned to point into a container is used or dereferenced even though it might be invalidated."
LongDesc="An iterator is assigned to point into a container, but later modifications to that container might have invalidated the iterator. The iterator is then used or dereferenced, which might be undefined behavior. Like pointers, iterators must point to a valid memory address to be used. When a container is modified by member functions such as insert or erase, some iterators might become invalidated and therefore risky to use.  Any function that can remove elements, and some functions that add elements, might invalidate iterators.  Iterators should be reassigned into a container after modifications are made and before they are used again, to ensure that they all point to a valid part of the container."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=ITR-mismatch-alg
Package=STDCHECKS
Group=ITR
CheckSynopsis="A pair of iterators passed to an STL algorithm function point to different containers."
LongDesc="A pair of iterators passed to an STL algorithm function point to different containers. This can cause the application to access invalid memory, which might lead to a crash or a security vulnerability."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=ITR-store
Package=STDCHECKS
Group=ITR
CheckSynopsis="A container's begin() or end() iterator is stored and subsequently used."
LongDesc="A container's begin() or end() iterator is stored and subsequently used. If the container is modified, these iterators will become invalidated. This could result in illegal memory access or a crash. Calling begin() and end() as these iterators are needed in loops and comparisons will ensure that only valid iterators are used."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=ITR-uninit
Package=STDCHECKS
Group=ITR
CheckSynopsis="An iterator is dereferenced or incremented before it is assigned to point into a container."
LongDesc="An iterator is dereferenced or incremented before it is assigned to point into a container. This will result in undefined behavior if the path that uses the uninitialized interator is executed, possibly causing illegal memory access or a crash."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-bsearch-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="Arguments passed to bsearch might cause it to overrun."
LongDesc="A buffer overrun might be caused by a call to bsearch. This is because a buffer length being passed is greater than that of the buffer passed to either function as their first argument"
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-bsearch-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="Arguments passed to bsearch cause it to overrun."
LongDesc="A buffer overrun is caused by a call to bsearch. This is because a buffer length being passed is greater than that of the buffer passed to either function as their first argument."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-fn-unsafe
Package=STDCHECKS
Group=LIB
CheckSynopsis="A potentially unsafe library function is used."
LongDesc="A potentially unsafe library function is used, for which there is a safer alternative. This library function might create vulnerabilities like possible buffer overflow, because it does not check the size of a string before copying it into memory.  The problem is that strcpy() and gets() functions are used. strncpy() should be used instead of strcpy(), and fgets() instead of gets(), because they include an additional argument in which the input's maximum allowed length is specified."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-fread-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to fread might cause a buffer overrun."
LongDesc="A call to fread might cause an overrun due to invalid arguments. fread takes an array as its first argument, the size of elements in the array as the second argument, and the number of elements in that array as the third. If (size * count) is greater than the allocated size of the array, an overrun will occur."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-fread-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to fread causes a buffer overrun."
LongDesc="A call to fread causes an overrun due to invalid arguments. fread takes an array as its first argument, the size of elements in the array as the second argument, and the number of elements in that array as the third. If (size * count) is greater than the allocated size of the array, an overrun will occur."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-memchr-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to memchr might cause a buffer overrun."
LongDesc="A call to memchr might cause a buffer overrun. If memchr is called with a size greater than the size of the allocated buffer, it will overrun and might cause a runtime error."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-memchr-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to memchr causes a buffer overrun."
LongDesc="A call to memchr causes a buffer overrun. If memchr is called with a size greater than the size of the allocated buffer, it will overrun and might cause a runtime error."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-memcpy-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to memcpy might cause the memory to overrun."
LongDesc="A call to memcpy might cause the memory to overrun at either the destination or the source address."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-memcpy-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to memcpy or memmove causes the memory to overrun."
LongDesc="A call to memcpy or memmove causes the memory to overrun at either the destination or the source address."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-memset-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to memset might cause a buffer overrun."
LongDesc="A call to memset might cause a buffer overrun. If memset is called with a size greater than the size of the allocated buffer, it will overrun and might cause a runtime error."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-memset-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to memset causes a buffer overrun."
LongDesc="A call to memset causes a buffer overrun. If memset is called with a size greater than the size of the allocated buffer, it will overrun and might cause a runtime error."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-putenv
Package=STDCHECKS
Group=LIB
CheckSynopsis="putenv used to set environment variable values."
LongDesc="The POSIX function putenv() is used to set environment variable values. The putenv() function does not create a copy of the string supplied to it as an argument; instead it inserts a pointer to the string into the environment array. If a pointer to a buffer of automatic storage duration is supplied as an argument to putenv(), the memory allocated for that buffer might be overwritten when the containing function returns and stack memory is recycled."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-qsort-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="Arguments passed to qsort might cause it to overrun."
LongDesc="A buffer overrun might be caused by a call to qsort. This is because a buffer length being passed is greater than that of the buffer passed to either function as their first argument."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-qsort-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="Arguments passed to qsort cause it to overrun."
LongDesc="A buffer overrun is caused by a call to qsort. This is because a buffer length being passed is greater than that of the buffer passed to either function as their first argument."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-return-const
Package=STDCHECKS
Group=LIB
CheckSynopsis="The return value of a const standard library function is not used."
LongDesc="The return value of a const standard library function is not used. Because this function is defined as const, the call itself has no side effects; the only yield is the return value. If this return value is not used, the function call is redundant. These functions are inspected: memchr(), strchr(), strpbrk(), strrchr(), strstr(), strtok(), gmtime(), getenv(), and bsearch().  Discarding the return values of these functions is harmless but might indicate a misunderstanding of the application logic or purpose."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-return-error
Package=STDCHECKS
Group=LIB
CheckSynopsis="The return value for a library function that might return an error value is not used."
LongDesc="The return value for a library function that might return an error value is not used. Because this function might fail, the programmer should inspect the return value to find any error values, to avoid a crash or unexpected behavior. These functions are isnpected: malloc(), calloc(), realloc(), and mktime()."
Severity=Medium
IdenticalTo=MISRAC2004-16.10 MISRAC++2008-0-3-2
Default=on
Visible=Yes

CheckName=LIB-return-leak
Package=STDCHECKS
Group=LIB
CheckSynopsis="The return values from one or more library functions were not stored, returned, or passed as a parameter."
LongDesc="The return values from one or more library functions were not stored, returned, or passed as a parameter. If any of these functions return a pointer to newly allocated memory, and the return value is discarded, the memory is inaccessible and thus leaked. These functions are inspected: malloc(), calloc(), and realloc()."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-return-neg
Package=STDCHECKS
Group=LIB
CheckSynopsis="A variable assigned using a library function that can return -1 as an error value is subsequently used where the value must be non-negative."
LongDesc="A variable assigned using a library function which can return -1 as an error value is subsequently used as a subscript or a size, both of which require the value to be non-negative. This might cause a crash or unpredictable behavior.  These functions are inspected: ftell(), clock(), time(), mktime(), fprintf(), printf(), sprintf(), vfprintf(), vprintf(), vsprintf(), mblen(), mbstowcs(), mbstowc(), wcstombs(), and wctomb()."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-return-null
Package=STDCHECKS
Group=LIB
CheckSynopsis="A pointer is assigned using a library function that can return NULL as an error value. This pointer is subsequently dereferenced without checking its value."
LongDesc="A pointer is assigned using a library function that can return NULL as an error value. This pointer is subsequently dereferenced without checking its value, which might lead to a NULL dereference. Not inspecting the return value of any function returning a pointer before dereferencing it, might cause a crash.  These functions are inspected: malloc(), calloc(), realloc(), memchr(), strchr(), strpbrk(), strrchr(), strstr(), strtok(), gmtime(), getenv(), and bsearch()."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-sprintf-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to sprintf causes a destination buffer overrun."
LongDesc="A call to the sprintf function causes a destination buffer overrun."
Severity=High
IdenticalTo=SEC-BUFFER-sprintf-overrun
Default=off
Visible=Yes

CheckName=LIB-std-sort-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="Using std::sort might cause buffer overrun."
LongDesc="Using std::sort might cause a buffer overrun. std::sort can take a pointer to an array and a pointer to the end of the array as arguments, but if the pointer to the end of the array actually points beyond the end of the array being sorted, a buffer overrun might occur."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-std-sort-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A buffer overrun is caused by use of std::sort."
LongDesc="A buffer overrun is caused by use of std::sort. std::sort can take a pointer to an array and a pointer to the end of the array as arguments, but if the pointer to the end of the array actually points beyond the end of the array being sorted, a buffer overrun will occur."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-strcat-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to strcat might cause destination buffer overrun."
LongDesc="A call to the strcat function might cause a destination buffer overrun."
Severity=Medium
IdenticalTo=CERT-STR31-C_d
Default=off
Visible=Yes

CheckName=LIB-strcat-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to strcat causes a destination buffer overrun."
LongDesc="A call to the strcat function causes a destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-strcpy-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to strcpy might cause destination buffer overrun."
LongDesc="A call to the strcpy function might cause a destination buffer overrun."
Severity=Medium
IdenticalTo=CERT-STR31-C_e
Default=off
Visible=Yes

CheckName=LIB-strcpy-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to strcpy causes a destination buffer overrun."
LongDesc="A call to the strcpy function causes a destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-strncat-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to strncat might cause a destination buffer overrun."
LongDesc="Calling strncat with a destination buffer that is too small will cause a buffer overrun.  strncat takes a destination buffer as its first argument. If the remaining space of this buffer is  smaller than the number of characters to append, as determined by the position of the null terminator in the  source buffer or the size passed as the third argument to strncat, an overflow might occur resulting in undefined  behavior and runtime errors."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=LIB-strncat-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to strncat causes a destination buffer overrun."
LongDesc="Calling strncat with a destination buffer that is too small will cause a buffer overrun.  strncat takes a destination buffer as its first argument. If the remaining space of this buffer is  smaller than the number of characters to append, as determined by the position of the null terminator in the  source buffer or the size passed as the third argument to strncat, an overflow might occur resulting in undefined  behavior and runtime errors."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-strncmp-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to strncmp might cause a buffer overrun."
LongDesc="An incorrect string length passed to strncmp might cause a buffer overrun. strncmp limits the number of characters it compares to the number passed as its third argument, to prevent buffer overruns with non-null-terminated strings. However, if a number is passed that is larger than the length of the two strings, and neither string is null-terminated, it will overrun."
Severity=High
IdenticalTo=CERT-STR31-C_g
Default=off
Visible=Yes

CheckName=LIB-strncmp-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A buffer overrun is caused by a call to strncmp."
LongDesc="A buffer overrun is caused by passing an incorrect string length to strncmp. strncmp limits the number of characters it compares to the number passed as its third argument, to prevent buffer overruns with non-null-terminated strings. However, if a number is passed that is larger than the length of the two strings, and neither string is null-terminated, it will overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=LIB-strncpy-overrun-pos
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to strncpy might cause a destination buffer overrun."
LongDesc="A call to strncpy might cause a destination buffer overrun."
Severity=Medium
IdenticalTo=CERT-STR31-C_h
Default=off
Visible=Yes

CheckName=LIB-strncpy-overrun
Package=STDCHECKS
Group=LIB
CheckSynopsis="A call to strncpy causes a destination buffer overrun."
LongDesc="A call to strncpy causes a destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=LOGIC-overload
Package=STDCHECKS
Group=LOGIC
CheckSynopsis="Overloaded && and || operators"
LongDesc="There are overloaded versions of the comma and logical conjunction operators with the semantics of function calls, whose sequence point and ordering semantics are different from those of the built- in versions. It might not be clear at the point of use that these operators are overloaded, and which semantics that apply. "
Severity=Low
IdenticalTo=MISRAC++2008-5-2-11_a MISRAC++2023-16.5.1
Default=off
Visible=Yes

CheckName=MEM-delete-array-op
Package=STDCHECKS
Group=MEM
CheckSynopsis="A memory location allocated with new is deleted with delete[]"
LongDesc="A memory location is allocated with the new operator but deleted with the delete [] operator. Use the delete operator instead."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-delete-op
Package=STDCHECKS
Group=MEM
CheckSynopsis="A memory location allocated with new [] is deleted with delete or free."
LongDesc="A memory location allocated with the new [] operator is deleted with the delete operator. Use the delete [] operator instead. The consequence of using delete is that only the array element directly pointed to will be deallocated, as if it were allocated with the singular new operator. This will most likely cause a memory leak. If free is used the resulting behavior will be undefined, because there is no guarantee that new invokes malloc."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-double-free-alias
Package=STDCHECKS
Group=MEM
CheckSynopsis="Freeing a memory location more than once."
LongDesc="An attempt is made to free a memory location after it has already been freed. This will most likely cause an application crash.  Unlike MEM-double-free, MEM-double-free-alias examines the location that pointers point to instead of the pointers themselves. You might see reports for code that looks like this (example of a linked list where each node has a pointer to an element, elem):  for (; list != NULL; list = list->next) {   free(list->elem); }  The warning is issued because there is no guarantee that each list node's elem field is the same."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-double-free-some
Package=STDCHECKS
Group=MEM
CheckSynopsis="A memory location is freed more than once on some paths but not on others."
LongDesc="There is a path through the code where a memory location is attempted to be freed after it has already been freed earlier. This will most likely cause an application crash on this path."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-22.2_b
Default=on
Visible=Yes

CheckName=MEM-double-free
Package=STDCHECKS
Group=MEM
CheckSynopsis="A memory location is freed more than once."
LongDesc="An attempt is made to free a memory location after it has already been freed. This will most likely cause an application crash."
Severity=High
IdenticalTo=MISRAC2012-Rule-22.2_a
Default=on
Visible=Yes

CheckName=MEM-free-field
Package=STDCHECKS
Group=MEM
CheckSynopsis="A struct or a class field is possibly freed."
LongDesc="A struct or a class field is possibly freed. Fields are located in the middle of memory objects and thus cannot be freed. Additionally, erroneously using free() on fields might corrupt stdlib's memory bookkeeping, affecting heap memory."
Severity=High
IdenticalTo=CERT-MEM34-C_b
Default=on
Visible=Yes

CheckName=MEM-free-fptr
Package=STDCHECKS
Group=MEM
CheckSynopsis="A function pointer is deallocated."
LongDesc="A function pointer is deallocated. Function pointers are not dynamically allocated, and should thus not be deallocated. Freeing a function pointer will result in undefined behavior."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-free-no-alloc-struct
Package=STDCHECKS
Group=MEM
CheckSynopsis="A struct field is deallocated without first having been allocated."
LongDesc="A struct field is deallocated without first having been allocated. This might cause a runtime error."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MEM-free-no-alloc
Package=STDCHECKS
Group=MEM
CheckSynopsis="A pointer is freed without having been allocated."
LongDesc="A pointer is freed without having been allocated."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MEM-free-no-use
Package=STDCHECKS
Group=MEM
CheckSynopsis="Memory is allocated and then freed without being used."
LongDesc="Memory is allocated and then freed without being used. This is probably unintentional and might indicate a copy-paste error."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-free-op
Package=STDCHECKS
Group=MEM
CheckSynopsis="Memory allocated with malloc deallocated using delete."
LongDesc="Memory allocated with malloc() or calloc() is deallocated using one of the delete operators instead of free(). This might cause a memory leak, or affect other heap memory due to corruption of stdlib's memory bookkeeping."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-free-struct-field
Package=STDCHECKS
Group=MEM
CheckSynopsis="A struct's field is deallocated, but is not dynamically allocated."
LongDesc="A struct's field is deallocated, but is not dynamically allocated. Regardless of whether a struct is allocated on the stack or on the heap, all non-dynamically allocated fields will be deallocated when the struct itself is deallocated (either through going out of scope or calling a function like free()). Explicitly freeing such fields might cause a crash, or corrupt surrounding memory. Incorrect use of free() might also corrupt stdlib's memory bookkeeping, affecting heap memory allocation."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-free-variable
Package=STDCHECKS
Group=MEM
CheckSynopsis="A stack address might be freed."
LongDesc="A stack address might be freed. Stack variables are automatically deallocated when they go out of scope. Consequently, explicitly freeing them might cause a crash or corrupt the surrounding stack data. Erroneously using free() on stack memory might also corrupt stdlib's memory bookkeeping, affecting heap memory."
Severity=High
IdenticalTo=MISRAC2012-Rule-22.2_c CERT-MEM34-C_a
Default=on
Visible=Yes

CheckName=MEM-leak-alias
Package=STDCHECKS
Group=MEM
CheckSynopsis="Incorrect deallocation causes memory leak."
LongDesc="Memory is allocated, but then the pointer value is lost due to reassignment or its scope ending, without a guarantee of the value being propagated or the memory being freed.  There must be no possible execution path during which the value is not freed, returned, or passed into another function as an argument, before it is lost.  This is a memory leak.  Note: If alias analysis is disabled, you must enable the non-alias version of this check, MEM-leak."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.13_b
Default=on
Visible=Yes

CheckName=MEM-leak
Package=STDCHECKS
Group=MEM
CheckSynopsis="Incorrect deallocation causes memory leak."
LongDesc="Memory is allocated, but then the pointer value is lost due to reassignment or its scope ending, without a guarantee of the value being propagated or the memory being freed.  There must be no possible execution path during which the value is not freed, returned, or passed into another function as an argument, before it is lost.  This is a memory leak."
Severity=High
IdenticalTo=MISRAC2012-Rule-22.1_a SEC-BUFFER-memory-leak CERT-MEM31-C
Default=off
Visible=Yes

CheckName=MEM-malloc-arith
Package=STDCHECKS
Group=MEM
CheckSynopsis="An assignment contains both a malloc() and pointer arithmetic on the right-hand side."
LongDesc="An assignment contains both a malloc() and pointer arithmetic on the  right-hand side. If this is unintentional, the start of the allocated memory  block might be lost, and a buffer overflow is possible."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=MEM-malloc-diff-type
Package=STDCHECKS
Group=MEM
CheckSynopsis="An allocation call tries to allocate memory based on a sizeof operator, but the destination type of the call is of a different type."
LongDesc="This might be an error, and will result in an allocated memory chunk that does not match the destination pointer or array.  This might easily result in an invalid memory dereference, and crash the application."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-malloc-sizeof-ptr
Package=STDCHECKS
Group=MEM
CheckSynopsis="malloc(sizeof(p)), where p is a pointer type, is assigned to a non-pointer variable."
LongDesc="The argument given to malloc() is the size of a pointer, but the use of the return address does not suggest a double-indirection pointer.  Allocating memory to an int*, for example, should use sizeof(int) rather than sizeof(int*). Otherwise, the memory allocated might be smaller than expected, potentially leading to an application crash or corruption of other heap memory."
Severity=High
IdenticalTo=CERT-MEM35-C_a
Default=on
Visible=Yes

CheckName=MEM-malloc-sizeof
Package=STDCHECKS
Group=MEM
CheckSynopsis="Allocating memory with malloc without using sizeof."
LongDesc="Memory was allocated with malloc() but the sizeof operator might not have been used. Using sizeof when allocating memory avoids any machine variations in the sizes of data types, and consequently avoids under-allocating.   To pass this check, assign the address of the allocated memory to a char pointer, because sizeof(char) always returns 1."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-malloc-strlen
Package=STDCHECKS
Group=MEM
CheckSynopsis="Dangerous arithmetic with strlen in argument to malloc."
LongDesc="Dangerous arithmetic with strlen in an argument to malloc. It is usual to allocate a new string using malloc(strlen(s)+1), to allow for the null terminator. However, it is easy to type malloc(strlen(s+1)) by mistake, leading to strlen returning a length one less than the length of s, or if s is empty, exhibit undefined behavior."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MEM-realloc-diff-type
Package=STDCHECKS
Group=MEM
CheckSynopsis="The type of the pointer that stores the result of realloc does not match the type of the first argument."
LongDesc="The type of the pointer that stores the result of realloc does not match the type of the first argument. Subsequent accesses to this memory might be misaligned and cause a runtime error."
Severity=Medium
IdenticalTo=CERT-MEM35-C_c
Default=on
Visible=Yes

CheckName=MEM-return-free
Package=STDCHECKS
Group=MEM
CheckSynopsis="A function deallocates memory, then returns a pointer to that memory."
LongDesc="A function deallocates memory, then returns a pointer to that memory. If the callee of this function attempts to dereference the returned pointer, this will cause a runtime error."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-return-no-assign
Package=STDCHECKS
Group=MEM
CheckSynopsis="A function that allocates memory's return value is not stored."
LongDesc="A function that allocates a memory's return value is not stored. Not storing the returned memory means that this memory cannot be tracked, and therefore deallocated. This will result in a memory leak."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MEM-stack-global-field
Package=STDCHECKS
Group=MEM
CheckSynopsis="A stack address is stored in the field of a global struct."
LongDesc="The address of a variable in stack memory is being stored in a global struct. When the relevant scope or function ends, the memory will become unused, and the externally stored address will point to junk data.  This is particularly dangerous because the application might appear to run normally, when it is in fact accessing illegal memory. This might also lead to an application crash, or data changing unpredictably."
Severity=High
IdenticalTo=MISRAC++2008-7-5-2_b MISRAC++2023-6.8.3_b MISRAC2004-17.6_c MISRAC2012-Rule-18.6_c CERT-DCL30-C_d
Default=on
Visible=Yes

CheckName=MEM-stack-global
Package=STDCHECKS
Group=MEM
CheckSynopsis="A stack address is stored in a global pointer."
LongDesc="The address of a variable in stack memory is being stored in a global variable. When the relevant scope or function ends, the memory will become unused, and the externally stored address will point to junk data.  This is particularly dangerous because the application might appear to run normally, when it is in fact accessing illegal memory. This might also lead to an application crash, or data changing unpredictably."
Severity=High
IdenticalTo=MISRAC++2008-7-5-2_a MISRAC++2023-6.8.3_a MISRAC2004-17.6_b MISRAC2012-Rule-18.6_b CERT-DCL30-C_c
Default=on
Visible=Yes

CheckName=MEM-stack-param-ref
Package=STDCHECKS
Group=MEM
CheckSynopsis="Stack address is stored via reference parameter."
LongDesc="A stack address is stored outside a function via a parameter of reference type.  The address of a local stack variable is assigned to a reference argument of its function. When the function ends, this memory address will become invalid.  This is particularly dangerous because the application might appear to run normally, when it is in fact accessing illegal memory. This might also lead to an application crash, or data changing unpredictably."
Severity=High
IdenticalTo=MISRAC++2008-7-5-2_d MISRAC++2023-6.8.3_d
Default=on
Visible=Yes

CheckName=MEM-stack-param
Package=STDCHECKS
Group=MEM
CheckSynopsis="A stack address is stored outside a function via a parameter."
LongDesc="The address of a local stack variable is assigned to a location supplied by the caller via a parameter. When the function ends, this memory address will become invalid.  This is particularly dangerous because the application might appear to run normally, when it is in fact accessing illegal memory. This might also lead to an application crash, or data changing unpredictably.  Note that this check looks for any expression referring to the store located by the parameter, so the assignment local[*parameter] = & local;  will trigger the check despite being OK."
Severity=High
IdenticalTo=MISRAC++2008-7-5-2_c MISRAC++2023-6.8.3_c MISRAC2004-17.6_d MISRAC2012-Rule-1.3_s MISRAC2012-Rule-18.6_d CERT-DCL30-C_e
Default=on
Visible=Yes

CheckName=MEM-stack-pos
Package=STDCHECKS
Group=MEM
CheckSynopsis="Might return address on the stack."
LongDesc="A local variable is defined in stack memory, then its address is potentially returned from the function. When the function exits, its stackframe will be considered illegal memory, and thus the address returned might be dangerous.  This code and subsequent memory accesses might appear to work, but the operations are illegal and an application crash, or memory corruption, is very likely.  To correct this problem, consider returning a copy of the object, using a global variable, or dynamically allocating memory."
Severity=High
IdenticalTo=CERT-DCL30-C_b
Default=on
Visible=Yes

CheckName=MEM-stack-ref
Package=STDCHECKS
Group=MEM
CheckSynopsis="A stack object is returned from a function as a reference."
LongDesc="A local variable is defined in stack memory, then it is returned from the function as a reference. When the function exits, its stackframe will be considered illegal memory, and thus the return value of the function will refer to an object that no longer exists.  Operations on the return value are illegal and an application crash, or memory corruption, is very likely.  A safe alternative is for the function to return a copy of the object."
Severity=High
IdenticalTo=MISRAC++2008-7-5-1_a MISRAC++2023-6.8.2_a
Default=on
Visible=Yes

CheckName=MEM-stack
Package=STDCHECKS
Group=MEM
CheckSynopsis="Might return address on the stack."
LongDesc="A local variable is defined in stack memory, then its address is potentially returned from the function. When the function exits, its stack frame will be considered illegal memory, and thus the address returned might be dangerous.  This code and subsequent memory accesses might appear to work, but the operations are illegal and an application crash, or memory corruption, is very likely.  To correct this problem, consider returning a copy of the object, using a global variable, or dynamically allocating memory."
Severity=High
IdenticalTo=MISRAC++2008-7-5-1_b MISRAC2004-17.6_a MISRAC2012-Rule-18.6_a CERT-DCL30-C_a MISRAC++2023-6.8.2_b
Default=on
Visible=Yes

CheckName=MEM-use-free-all
Package=STDCHECKS
Group=MEM
CheckSynopsis="A pointer is used after it has been freed."
LongDesc="Memory is being accessed after it has been deallocated. The application might appear to run normally, but the operation is illegal.  The most likely result is a crash, but the application might keep running with erroneous or corrupt data."
Severity=High
IdenticalTo=MISRAC2012-Dir-4.13_d MISRAC2012-Rule-1.3_o SEC-BUFFER-use-after-free-all CERT-MEM30-C_a
Default=on
Visible=Yes

CheckName=MEM-use-free-some
Package=STDCHECKS
Group=MEM
CheckSynopsis="A pointer is used after it has been freed."
LongDesc="A pointer is used after it has been freed.  This might cause data corruption or an application crash."
Severity=High
IdenticalTo=MISRAC2012-Dir-4.13_e MISRAC2012-Rule-1.3_p SEC-BUFFER-use-after-free-some CERT-MEM30-C_b
Default=on
Visible=Yes

CheckName=POR-imp-cast-subscript
Package=STDCHECKS
Group=POR
CheckSynopsis="An array subscript has an implicit cast to a larger type."
LongDesc="A large array, which a 32-bit number is insufficient to span, is accessed via a subscript operator whose index operand has a small type, such as int. The argument to the subscript operator must be explicitly cast to a sufficiently larger type, such as a long long."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=POR-imp-cast-ternary
Package=STDCHECKS
Group=POR
CheckSynopsis="Implicit cast in one of the branches of a ternary operator."
LongDesc="A ternary choice operator returns values of different types for its true and false branches, leading to an implicit cast in one of the branches. This might mask overflows or rounding errors."
Severity=Medium
IdenticalTo=
Default=off
Visible=No

CheckName=PTR-arith-field
Package=STDCHECKS
Group=PTR
CheckSynopsis="Direct access to a field of a struct, using an offset from the address of the struct."
LongDesc="A field of a struct is accessed directly, using an offset from the address of the struct. Because a struct might in some cases be padded to maintain proper alignment of its fields, it can be very dangerous to access fields using only an offset from the address of the struct itself."
Severity=Medium
IdenticalTo=MISRAC2004-17.1_a
Default=on
Visible=Yes

CheckName=PTR-arith-stack
Package=STDCHECKS
Group=PTR
CheckSynopsis="Pointer arithmetic applied to a pointer that references a stack address"
LongDesc="A pointer is assigned a stack-based address and then used in pointer arithmetic."
Severity=Medium
IdenticalTo=MISRAC2004-17.1_b MISRAC++2008-5-0-16_a
Default=on
Visible=Yes

CheckName=PTR-arith-var
Package=STDCHECKS
Group=PTR
CheckSynopsis="Invalid pointer arithmetic with an automatic variable that is neither an array nor a pointer."
LongDesc="The address of an automatic variable is taken, and arithmetic is performed on it. This should be avoided, because memory beyond the memory that was allocated for an automatic variable is invalid, and attempting to access it can lead to an application crash. This check handles local variables, parameters and globals, including structs."
Severity=Medium
IdenticalTo=MISRAC2004-17.1_c MISRAC++2008-5-0-16_b
Default=on
Visible=Yes

CheckName=PTR-cmp-str-lit
Package=STDCHECKS
Group=PTR
CheckSynopsis="A variable is tested for equality with a string literal."
LongDesc="A variable is tested for equality with a string literal. This compares the variable with the address of the literal, which is probably not the intended behavior. It is more likely that the intent is to compare the contents of strings  at different addresses, for example with the strcmp() function. "
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=PTR-null-assign-fun-pos
Package=STDCHECKS
Group=PTR
CheckSynopsis="Possible NULL pointer dereferenced by a function."
LongDesc="A pointer variable is assigned NULL, either directly or as the result of a function call that can return NULL. This pointer is then dereferenced, either directly, or by being passed to a function that might dereference it without checking its value. This will cause an application crash."
Severity=High
IdenticalTo=CERT-EXP34-C_b
Default=off
Visible=Yes

CheckName=PTR-null-assign-pos
Package=STDCHECKS
Group=PTR
CheckSynopsis="A pointer is assigned a value that might be NULL, and then dereferenced."
LongDesc="A pointer is assigned a value that might be NULL, and then dereferenced.  Often the source of the potential NULL pointer is a memory allocation function like malloc(), or a sentinel value provided in a user function."
Severity=High
IdenticalTo=CERT-EXP34-C_c
Default=off
Visible=Yes

CheckName=PTR-null-assign
Package=STDCHECKS
Group=PTR
CheckSynopsis="A pointer is assigned the value NULL, then dereferenced."
LongDesc="A pointer is assigned the value NULL, then dereferenced.  Assigning the pointer the value NULL might have been intentional to indicate  that the pointer is no longer being used, but it is an error to subsequently dereference  it, and will cause an application crash."
Severity=High
IdenticalTo=CERT-EXP34-C_d
Default=on
Visible=Yes

CheckName=PTR-null-cmp-aft
Package=STDCHECKS
Group=PTR
CheckSynopsis="A pointer is dereferenced, then compared with NULL."
LongDesc="A pointer is dereferenced, then compared with NULL.  Dereferencing a pointer implicitly asserts that it is not  NULL. Comparing it with NULL after this suggests that it might have been NULL when it was dereferenced."
Severity=High
IdenticalTo=CERT-EXP34-C_e
Default=on
Visible=Yes

CheckName=PTR-null-cmp-bef-fun
Package=STDCHECKS
Group=PTR
CheckSynopsis="A pointer is compared with NULL, then dereferenced by a function."
LongDesc="A pointer is compared with NULL, then passed as an argument to a function that might dereference it.  This might occur if the wrong comparison operator is used,  for example if == instead of !=, or if the then- and else-  clauses of an if-statement are accidentally swapped.  If the function does dereference the pointer, the application will crash. If it does not, the argument is unneeded."
Severity=High
IdenticalTo=CERT-EXP34-C_f
Default=on
Visible=Yes

CheckName=PTR-null-cmp-bef
Package=STDCHECKS
Group=PTR
CheckSynopsis="A pointer is compared with NULL, then dereferenced."
LongDesc="A pointer is compared with NULL, then dereferenced.  This might occur if the wrong comparison operator is used,  for example if == instead of !=, or if the then- and else-  clauses of an if-statement are accidentally swapped.  If the condition is evaluated and found to be true, the application will crash."
Severity=High
IdenticalTo=CERT-EXP34-C_g
Default=on
Visible=Yes

CheckName=PTR-null-fun-pos
Package=STDCHECKS
Group=PTR
CheckSynopsis="A possible NULL pointer is returned from a function, and immediately dereferenced without checking."
LongDesc="A pointer that might be NULL is returned from a function, and immediately dereferenced without checking."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=PTR-null-literal-pos
Package=STDCHECKS
Group=PTR
CheckSynopsis="A literal pointer expression (like NULL) is dereferenced by a function call."
LongDesc="A literal pointer expression (for example NULL) is passed as argument to a function that might dereference it.  Pointer values are generally only useful if acquired at runtime, and thus dereferencing a literal address is usually unintentional, resulting in corrupted memory or an application crash."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=PTR-overload
Package=STDCHECKS
Group=PTR
CheckSynopsis="An & operator is overloaded."
LongDesc="The address of an object of incomplete type is taken. Because the complete type contains a user-declared & operator, this leads to undefined behavior."
Severity=Low
IdenticalTo=MISRAC++2008-5-3-3 MISRAC++2023-16.5.2
Default=off
Visible=Yes

CheckName=PTR-singleton-arith-pos
Package=STDCHECKS
Group=PTR
CheckSynopsis="Pointer arithmetic might be performed on a pointer that points to a single object."
LongDesc="Pointer arithmetic might be performed on a pointer that points to a single object. If this pointer is subsequently dereferenced, it could be pointing to invalid memory, causing a runtime error."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=PTR-singleton-arith
Package=STDCHECKS
Group=PTR
CheckSynopsis="Pointer arithmetic is performed on a pointer that points to a single object."
LongDesc="Pointer arithmetic is performed on a pointer that points to a single object. If this pointer is subsequently dereferenced, it might be pointing to invalid memory, causing a runtime error."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=PTR-unchk-param-some
Package=STDCHECKS
Group=PTR
CheckSynopsis="A pointer is dereferenced after being determined not to be NULL on some paths, but not checked on others."
LongDesc="On some execution paths a pointer is determined not to be NULL before being dereferenced, but is dereferenced on other paths without checking.  Checking a pointer value indicates that its value might be NULL. It should thus be checked on all possible execution paths that result in a dereference."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=PTR-unchk-param
Package=STDCHECKS
Group=PTR
CheckSynopsis="A pointer parameter is not compared to NULL"
LongDesc="A function dereferences a pointer argument, without first checking that it isn't equal to NULL.  Dereferencing a NULL pointer will cause an application crash."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=PTR-uninit-pos
Package=STDCHECKS
Group=PTR
CheckSynopsis="Possible dereference of an uninitialized or NULL pointer."
LongDesc="On some execution paths, an uninitialized pointer value is dereferenced.  This might cause memory corruption or an application crash. Pointer values must be initialized on all execution paths that result in a dereference."
Severity=Low
IdenticalTo=MISRAC2012-Rule-9.1_a CERT-EXP33-C_c
Default=off
Visible=Yes

CheckName=PTR-uninit
Package=STDCHECKS
Group=PTR
CheckSynopsis="Dereference of an uninitialized or NULL pointer."
LongDesc="An uninitialized pointer value is being dereferenced.  This might cause memory corruption or an application crash. Pointer values must be initialized before being dereferenced."
Severity=High
IdenticalTo=MISRAC2004-9.1_c MISRAC++2008-8-5-1_c
Default=on
Visible=Yes

CheckName=RED-alloc-zero-bytes
Package=STDCHECKS
Group=RED
CheckSynopsis="Checks that an allocation does not allocate zero bytes"
LongDesc="Checks that an allocation does not allocate zero bytes.  Allocation functions checked: malloc/calloc/valloc/alloca/operator new[]/calloc/realloc/memalign/posix_memalign."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=RED-case-reach
Package=STDCHECKS
Group=RED
CheckSynopsis="A case statement within a switch statement cannot be reached."
LongDesc="A case statement within a switch statement cannot be reached, because  the switch statement's expression cannot have the value of the case statement's label.  This often occurs because literal values have been assigned to the switch condition. An unreachable case statement is not unsafe as such, but might indicate a programming error."
Severity=Low
IdenticalTo=MISRAC++2008-0-1-2_c MISRAC2012-Rule-2.1_a MISRAC++2023-0.0.2_c
Default=off
Visible=Yes

CheckName=RED-cmp-always
Package=STDCHECKS
Group=RED
CheckSynopsis="A comparison using ==, <, <=, >, or >= is always true."
LongDesc="A comparison using ==, <, <=, >, or >= is always true, given the values of the arguments of the comparison operator.  This often occurs because literal values or macros have been used on one or both sides of the operator. Double-check that the operands and the code logic are correct."
Severity=Low
IdenticalTo=MISRAC2004-13.7_a
Default=off
Visible=Yes

CheckName=RED-cmp-never
Package=STDCHECKS
Group=RED
CheckSynopsis="A comparison using ==, <, <=, >, or >= is always false."
LongDesc="A comparison using ==, <, <=, >, or >= is always false, based on the values of the arguments of the comparison operator.  This often occurs because literal values or macros have been used on one or both sides of the operator. Double-check that the operands and the code logic are correct."
Severity=Low
IdenticalTo=MISRAC2004-13.7_b
Default=off
Visible=Yes

CheckName=RED-cond-always
Package=STDCHECKS
Group=RED
CheckSynopsis="The condition in an if, for, while, do-while, or ternary operator will always be true."
LongDesc="The condition in an if, for, while, do-while, or ternary operator will always be true. This might indicate a logical error that could result in unexpected runtime behavior."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-14.3_a MISRAC++2008-0-1-2_a MISRAC++2023-0.0.2_a
Default=off
Visible=Yes

CheckName=RED-cond-const-assign
Package=STDCHECKS
Group=RED
CheckSynopsis="A constant assignment in a conditional expression."
LongDesc="An assignment of a constant to a variable is used in a conditional expression. It is most likely an accidental use of the assignment operator (=) instead of the comparison operator (==).  The usual result of an assignment operation is the value of the right-hand operand, which in this case is a constant value. This constant value is being compared to zero in the condition, then an execution path is chosen. Any alternate paths are unreachable because of this constant condition."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=RED-cond-const-expr
Package=STDCHECKS
Group=RED
CheckSynopsis="A conditional expression with a constant value"
LongDesc="A non-trivial expression composed only of constants is used as the truth value in a conditional expression. The condition will either always or never be true, and thus program flow is deterministic, making the test redundant.  This check assumes that trivial conditions, such as using a const variable or literal directly, are intentional. It is easy to see if they are indeed unintentional."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=RED-cond-const
Package=STDCHECKS
Group=RED
CheckSynopsis="A constant value is used as the condition for a loop or if statement."
LongDesc="A constant value is used as the condition for a loop or if statement. This might be an error. If the condition is part of a for or while loop, it will never terminate."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=RED-cond-never
Package=STDCHECKS
Group=RED
CheckSynopsis="The condition in if, for, while, do-while, or ternary operator will never be true."
LongDesc="The condition in an if, for, while, do-while, or ternary operator will never be true. This might indicate a logical error that could result in unexpected runtime behavior."
Severity=Medium
IdenticalTo=MISRAC++2008-0-1-2_b MISRAC2012-Rule-14.3_b MISRAC++2023-0.0.2_b
Default=off
Visible=Yes

CheckName=RED-dead
Package=STDCHECKS
Group=RED
CheckSynopsis="A part of the application is never executed."
LongDesc="There are statements in the application that cannot be reached on at least some execution paths.  Dead code might indicate  problems with the application's branching structure."
Severity=Low
IdenticalTo=MISRAC2004-14.1 MISRAC++2008-0-1-1 MISRAC++2008-0-1-9 MISRAC2012-Rule-2.1_b MISRAC++2023-0.0.1
Default=on
Visible=Yes

CheckName=RED-expr
Package=STDCHECKS
Group=RED
CheckSynopsis="Some expressions, such as x & x and x | x, are redundant."
LongDesc="Using one or more variable does not result in a change in that variable, or another variable, or some other side-effect. Giving two identical operands to a bitwise OR operator, for example, yields nothing, because the result is equal to the original operands.  This might indicate that one of the variables is not intended to be used where it is used. This use of the operator is redundant."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=RED-func-no-effect
Package=STDCHECKS
Group=RED
CheckSynopsis="A function is declared that has no return type and creates no side effects."
LongDesc="A function is declared that has no return type and creates no side effects. This function is meaningless."
Severity=Low
IdenticalTo=MISRAC++2008-0-1-8
Default=off
Visible=Yes

CheckName=RED-local-hides-global
Package=STDCHECKS
Group=RED
CheckSynopsis="The definition of a local variable hides a global definition."
LongDesc="A local variable is declared with the same name as a global variable, hiding the global variable from this scope, from this point onwards.  This might be intentional, but it is better to use a different name for the local variable, so that a reference to the global variable does not accidentally change or return the local value."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=RED-local-hides-local
Package=STDCHECKS
Group=RED
CheckSynopsis="The definition of a local variable hides a previous local definition."
LongDesc="A local variable is declared with the same name as another local variable, hiding the outer value from this scope, from this point onwards.  This might be intentional, but it is better to use a different name for the second variable, so that a reference to the outer variable does not accidentally change or return the inner value."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=RED-local-hides-member
Package=STDCHECKS
Group=RED
CheckSynopsis="The definition of a local variable hides a member of the class."
LongDesc="A local variable is declared in a class function with the same name as a member of the class, hiding the member from this scope, from this point onwards.  This might be intentional, but it is better to use a different name for the variable, so that a reference to the class member does not accidentally change or return the local value."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=RED-local-hides-param
Package=STDCHECKS
Group=RED
CheckSynopsis="A variable declaration hides a parameter of the function"
LongDesc="A local variable is declared in a function with the same name as an argument of the function, hiding the argument from this scope, from this point onwards.  This might be intentional, but it is better to use a different name for the variable, so that a reference to the argument does not accidentally change or return the inner value."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=RED-no-effect
Package=STDCHECKS
Group=RED
CheckSynopsis="A statement potentially contains no side effects."
LongDesc="A statement expression seems to have no side-effects and is redundant. For example, 5 + 6; will add 5 and 6, but will not use the result anywhere. Consequently the statement has no effect on the rest of the application, and should probably be deleted. "
Severity=Low
IdenticalTo=MISRAC2004-14.2 MISRAC2012-Rule-2.2_a
Default=off
Visible=Yes

CheckName=RED-self-assign
Package=STDCHECKS
Group=RED
CheckSynopsis="In a C++ class member function, a variable is assigned to itself."
LongDesc="In a C++ class member function, a variable is assigned to itself.  This error might be harder to identify than in an ordinary C function,  because variables might be qualified by this, and thus refer to class members."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=RED-unused-assign
Package=STDCHECKS
Group=RED
CheckSynopsis="A variable is assigned a non-trivial value that is never used."
LongDesc="A variable is assigned a non-trivial value that is never used.  This is not unsafe as such, but might indicate a logical error."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=RED-unused-enum-val
Package=STDCHECKS
Group=RED
CheckSynopsis="An enumerated value is not used."
LongDesc="An enumerated value is not used. It is either missing, perhaps in a switch, or it could be removed."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=RED-unused-param
Package=STDCHECKS
Group=RED
CheckSynopsis="A function parameter is declared but not used."
LongDesc="A function parameter is declared but not used. This might be intentional, and is not unsafe as such. For example, the function might need to follow a specific calling  convention, or might be a virtual C++ function that does not need as much information from its arguments as other functions do.  Make sure that it is not an error."
Severity=Low
IdenticalTo=MISRAC++2008-0-1-11 MISRAC2012-Rule-2.7 MISRAC++2023-0.2.2_a
Default=off
Visible=Yes

CheckName=RED-unused-return-val
Package=STDCHECKS
Group=RED
CheckSynopsis="There are unused function return values (other than overloaded operators)."
LongDesc="There are unused function return values (other than overloaded operators). This might be an error. The return value of a function should always be used. Overloaded operators are excluded; they should behave like the built-in operators.  You can discard the return value of a function by using a (void) cast."
Severity=Low
IdenticalTo=MISRAC++2008-0-1-7 MISRAC2012-Rule-17.7
Default=off
Visible=Yes

CheckName=RED-unused-val
Package=STDCHECKS
Group=RED
CheckSynopsis="A variable is assigned a value that is never used."
LongDesc="A variable is initialized or assigned a value, and then another assignment destroys that value before it is used.  This is not unsafe as such, but might indicate a logical error.  This check does not detect when a value is simply lost when the function ends."
Severity=Low
IdenticalTo=MISRAC++2008-0-1-6 MISRAC2012-Rule-2.2_c
Default=off
Visible=Yes

CheckName=RED-unused-var-all
Package=STDCHECKS
Group=RED
CheckSynopsis="A variable is neither read nor written for any execution path."
LongDesc="A variable is neither read nor written for any execution path. Writing includes initialization, and reading includes passing the variable as a parameter in a function call.  This is not unsafe as such, but might indicate a logical error."
Severity=Low
IdenticalTo=MISRAC++2008-0-1-3
Default=on
Visible=Yes

CheckName=RESOURCE-deref-file
Package=STDCHECKS
Group=RESOURCE
CheckSynopsis="A pointer to a FILE object is dereferenced."
LongDesc="A pointer to a FILE object is dereferenced."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=RESOURCE-double-close
Package=STDCHECKS
Group=RESOURCE
CheckSynopsis="A file resource is closed multiple times"
LongDesc="An open file is closed multiple times without being re-opened in between. This will cause an application crash."
Severity=High
IdenticalTo=CERT-FIO46-C_c
Default=on
Visible=Yes

CheckName=RESOURCE-file-no-close-all
Package=STDCHECKS
Group=RESOURCE
CheckSynopsis="A file pointer is never closed."
LongDesc="One or more file pointers are never closed. To avoid failure caused by resource exhaustion, all file pointers obtained dynamically by means of Standard Library functions must be explicitly released.  Releasing them as soon as possible reduces the risk that exhaustion will occur."
Severity=High
IdenticalTo=MISRAC2012-Dir-4.13_c MISRAC2012-Rule-22.1_b SEC-FILEOP-open-no-close CERT-FIO42-C_a
Default=on
Visible=Yes

CheckName=RESOURCE-file-pos-neg
Package=STDCHECKS
Group=RESOURCE
CheckSynopsis="A file handler might be negative"
LongDesc="A file handler might be negative.  If open() cannot open a file, it will return a negative file descriptor. Using this file descriptor might cause a runtime error."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=RESOURCE-file-use-after-close
Package=STDCHECKS
Group=RESOURCE
CheckSynopsis="A file resource is used after it has been closed."
LongDesc="A file resource is referred to after it has been closed. When a file has been closed, any reference to it is invalid. Using this reference might cause an application crash."
Severity=High
IdenticalTo=RESOURCE-file-use-after-close SEC-FILEOP-use-after-close MISRAC2012-Dir-4.13_f CERT-FIO46-C_b
Default=on
Visible=Yes

CheckName=RESOURCE-implicit-deref-file
Package=STDCHECKS
Group=RESOURCE
CheckSynopsis="A file pointer is implicitly dereferenced by a library function."
LongDesc="A file pointer is implicitly dereferenced by a library function."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-22.5_b
Default=off
Visible=Yes

CheckName=RESOURCE-write-ronly-file
Package=STDCHECKS
Group=RESOURCE
CheckSynopsis="A file opened as read-only is written to."
LongDesc="A file opened as read-only is written to. This will cause a runtime error in your application, either silently if the file exists, or as a crash if it does not exist."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-22.4
Default=on
Visible=Yes

CheckName=SEM-const-call
Package=STDCHECKS
Group=SEM
CheckSynopsis="In a function marked with the const attribute, there is a call to a function without that attribute."
LongDesc="The const attribute allows a function to be declared as having no side-effects, and not accessing global memory at all. In this case, a function is being called which is not declared const, violating the contract of the attribute.  These attributes allow compilers to use optimizations that might cause corrupted memory or erroneous data if the attributes are misused or not upheld."
Severity=Medium
IdenticalTo=
Default=off
Visible=No

CheckName=SEM-const-global
Package=STDCHECKS
Group=SEM
CheckSynopsis="A global variable is read or written in a function marked with the const attribute."
LongDesc="The const attribute allows a function to be declared as having no side-effects, and not accessing global memory at all. In this case, a global variable is read from or written to, violating the contract of the attribute.  These attributes allow compilers to use optimizations that might cause corrupted memory or erroneous data if the attributes are misused or not upheld."
Severity=Medium
IdenticalTo=
Default=off
Visible=No

CheckName=SEM-pure-call
Package=STDCHECKS
Group=SEM
CheckSynopsis="In a function marked with the attribute pure, there is a call to a function without the pure or const attribute."
LongDesc="The pure attribute allows a function to be declared as having no side-effects. In this case, a function is being called which is not declared pure, creating a side-effect and violating the contract of the attribute.  These attributes allow compilers to use optimizations that might cause corrupted memory or erroneous data if the attributes are misused or not upheld."
Severity=Medium
IdenticalTo=
Default=off
Visible=No

CheckName=SEM-pure-global
Package=STDCHECKS
Group=SEM
CheckSynopsis="A global variable is written in a function marked with the attribute pure."
LongDesc="The pure attribute allows a function to be declared as having no side-effects. In this case, a global variable is being written to, creating a side-effect and violating the contract of the attribute.  These attributes allow compilers to use optimizations that might cause corrupted memory or erroneous data if the attributes are misused or not upheld."
Severity=Medium
IdenticalTo=
Default=off
Visible=No

CheckName=SIZEOF-side-effect
Package=STDCHECKS
Group=SIZEOF
CheckSynopsis="sizeof expressions containing side effects"
LongDesc="The sizeof operator is used on an expression that contains side effects. Because sizeof only operates on the type of the expression, the expression itself is not evaluated, which it probably was meant to be."
Severity=Medium
IdenticalTo=MISRAC2004-12.3 MISRAC++2008-5-3-4
Default=on
Visible=Yes

CheckName=SPC-order
Package=STDCHECKS
Group=SPC
CheckSynopsis="Expressions that depend on order of evaluation were found."
LongDesc="One and the same variable is changed in different parts of an expression with an unspecified evaluation order, between two consecutive sequence points.  Standard C does not specify an evaluation order for different parts of an expression. For this reason different compilers are free to perform their own optimizations regarding the evaluation order. Projects containing statements that violate this check are not easily ported to another architecture or compiler, and if they are they might be difficult to debug.  Only four operators have a guaranteed order of evaluation: logical AND (a && b) evaluates the left operand, then the right operand only if the left is found to be true; logical OR (a || b) evaluates the left operand, then the right operand only if the left is found to be false; a ternary conditional (a ? b : c) evaluates the first operand, then either the second or the third, depending on whether the first is found to be true or false; and a comma (a , b) evaluates its left operand before its right."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-1_a MISRAC2004-12.2_a MISRAC2012-Rule-1.3_i MISRAC2012-Rule-13.2_a CERT-EXP30-C_a
Default=on
Visible=Yes

CheckName=SPC-return
Package=STDCHECKS
Group=SPC
CheckSynopsis="For some execution paths, no return statement is executed in a function with a non-void return type."
LongDesc="At least one execution path in a non-void function is missing a return statement before the function exits. If a non-void function has no return statement, it will return an undefined value. This is not a problem if the function is used as a void function, but if the function return value is used it will cause unpredictable behavior. This is a weaker check than the one performed by gcc. Its check allows more aggressive coding without violating the rule. However, a rule violation in gcc means there is no path leading to a return statement."
Severity=Medium
IdenticalTo=MISRAC2004-16.8 MISRAC++2008-8-4-3 MISRAC2012-Rule-17.4 MISRAC++2023-9.6.5
Default=on
Visible=No

CheckName=SPC-uninit-arr-all
Package=STDCHECKS
Group=SPC
CheckSynopsis="Reads from local buffers are not preceded by writes."
LongDesc="A value is read from an array, without being explicitly stored in that array first.  This check determines whether at least one element of an array has been written before any element of the array is read. If the check triggers, it generally means that an uninitialized value is read. This might cause incorrect behavior or an application crash."
Severity=High
IdenticalTo=MISRAC2004-1.2_a MISRAC2012-Rule-9.1_b CERT-EXP33-C_d
Default=off
Visible=Yes

CheckName=SPC-uninit-struct-field-heap
Package=STDCHECKS
Group=SPC
CheckSynopsis="A field of a dynamically allocated struct is read before it is initialized."
LongDesc="A field of a dynamically allocated struct is read before it is initialized. An uninitialized field might cause unexpected and unpredictable results. Uninitialized variables are easy to overlook, because they seldom cause problems."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SPC-uninit-struct-field
Package=STDCHECKS
Group=SPC
CheckSynopsis="A field of a local struct is read before it is initialized."
LongDesc="A field of a local struct is read before it is initialized. An uninitialized field might cause unexpected and unpredictable results. Uninitialized variables are easy to overlook, because they seldom cause problems."
Severity=High
IdenticalTo=MISRAC2004-1.2_b MISRAC2012-Rule-9.1_d CERT-EXP33-C_e
Default=off
Visible=Yes

CheckName=SPC-uninit-var-all
Package=STDCHECKS
Group=SPC
CheckSynopsis="A variable is read before it is assigned a value."
LongDesc="A variable is read before it is assigned a value. Different execution paths might result in a variable  being read at different points in the execution. Because uninitialized data is read, application behavior might be unpredictable."
Severity=High
IdenticalTo=MISRAC2004-9.1_a MISRAC++2008-8-5-1_a MISRAC2012-Rule-9.1_e MISRAC2012-Rule-1.3_j
Default=on
Visible=Yes

CheckName=SPC-uninit-var-some
Package=STDCHECKS
Group=SPC
CheckSynopsis="A variable is read before it is assigned a value."
LongDesc="A variable is read before it is assigned a value. On some execution paths, the variable might be read before it is assigned  a value. This might cause unpredictable application behavior."
Severity=High
IdenticalTo=MISRAC2004-9.1_b MISRAC++2008-8-5-1_b MISRAC2012-Rule-9.1_f MISRAC2012-Rule-1.3_k MISRAC++2023-11.6.2
Default=on
Visible=Yes

CheckName=SPC-volatile-reads
Package=STDCHECKS
Group=SPC
CheckSynopsis="There are multiple read accesses with volatile-qualified type within one and the same sequence point."
LongDesc="There are multiple read accesses with volatile-qualified type within one and the same sequence point. There cannot be more than one read access with volatile-qualified type within a sequence point."
Severity=Medium
IdenticalTo=MISRAC2004-12.2_b MISRAC++2008-5-0-1_b MISRAC2012-Rule-13.2_b
Default=off
Visible=Yes

CheckName=SPC-volatile-writes
Package=STDCHECKS
Group=SPC
CheckSynopsis="There are multiple write accesses with volatile-qualified type within one and the same sequence point."
LongDesc="There are multiple write accesses with volatile-qualified type within one and the same sequence point. There cannot be more than one write access with volatile-qualified type within a sequence point."
Severity=Medium
IdenticalTo=MISRAC2004-12.2_c MISRAC++2008-5-0-1_c MISRAC2012-Rule-13.2_c
Default=off
Visible=Yes

CheckName=STR-trigraph
Package=STDCHECKS
Group=STR
CheckSynopsis="Trigraphs were found in string literals."
LongDesc="Trigraphs were found in string literals. Trigraphs can cause confusion with other uses of two question marks and should not be used."
Severity=Low
IdenticalTo=MISRAC2004-4.2 MISRAC++2008-2-3-1 MISRAC2012-Rule-4.2 support for trigraphs is disabled
Default=on
Visible=No

CheckName=STRUCT-signed-bit
Package=STDCHECKS
Group=STRUCT
CheckSynopsis="There are signed single-bit fields (excluding anonymous fields)."
LongDesc="There are signed single-bit fields (excluding anonymous fields). A signed bitfield should have size at least two, because one bit is required for the sign."
Severity=Low
IdenticalTo=MISRAC2004-6.5 MISRAC++2008-9-6-4 MISRAC2012-Rule-6.2 MISRAC++2023-12.2.3
Default=off
Visible=Yes

CheckName=SWITCH-fall-through
Package=STDCHECKS
Group=SWITCH
CheckSynopsis="There are non-empty switch cases not terminated by break and without 'fallthrough' comment."
LongDesc="There are non-empty switch cases not terminated by a break. A non-empty switch clause should be terminated by an unconditional break statement, unless explicitly commented as a 'fallthrough'."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=SWITCH-missing-enum-val
Package=STDCHECKS
Group=SWITCH
CheckSynopsis="A switch case uses only a subset of an enumeration."
LongDesc="A switch case uses only a subset of an enumeration."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=THROW-empty
Package=STDCHECKS
Group=THROW
CheckSynopsis="Unsafe rethrow of exception."
LongDesc="A throw statement without an argument is used outside of a catch handler where there is no exception to rethrow. This is unsafe because a throw statement without an argument rethrows the temporary object that represents the current exception, to allow exception handling to be split over several handlers."
Severity=Medium
IdenticalTo=MISRAC++2008-15-1-3 MISRAC++2023-18.1.2
Default=off
Visible=Yes

CheckName=THROW-main
Package=STDCHECKS
Group=THROW
CheckSynopsis="No default exception handler for main."
LongDesc="A main does not have a default exception handler that will catch exceptions. Without this, an unhandled exception might lead to termination in an implementation-defined manner."
Severity=Medium
IdenticalTo=MISRAC++2008-15-3-2 MISRAC++2023-18.3.1
Default=off
Visible=Yes

CheckName=THROW-null
Package=STDCHECKS
Group=THROW
CheckSynopsis="Throw of NULL integer constant"
LongDesc="throw(NULL) (equivalent to throw(0)) is never a throw of the null-pointer-constant, which means it can only be caught by an integer handler. This might be undesired behavior, especially if your application only has handlers for pointer-to-type exceptions."
Severity=Medium
IdenticalTo=MISRAC++2008-15-1-2
Default=on
Visible=Yes

CheckName=THROW-ptr
Package=STDCHECKS
Group=THROW
CheckSynopsis="Throw of exceptions by pointer"
LongDesc="An exception object of pointer type is thrown and that pointer refers to a dynamically created object. It might thus be unclear which function is responsible for destroying it, and when. This ambiguity does not exist if the object is caught by value or reference. "
Severity=Medium
IdenticalTo=MISRAC++2008-15-0-2 MISRAC++2023-18.1.1
Default=on
Visible=Yes

CheckName=THROW-static
Package=STDCHECKS
Group=THROW
CheckSynopsis="Exceptions thrown without a handler in some call paths that lead to that point."
LongDesc="There are exceptions thrown without a handler in some call paths that lead to that point. If an application throws an unhandled exception, it terminates in an implementation-defined manner. In particular, it is implementation-defined whether the call stack is unwound before termination, so the destructors of any automatic objects might not be invoked.  If an exception is thrown as an object of a derived class, a compatible type might be either the derived class or any of its bases.  Make sure that the application catches all exceptions it is expected to throw."
Severity=Medium
IdenticalTo=MISRAC++2008-15-3-1
Default=on
Visible=Yes

CheckName=THROW-unhandled
Package=STDCHECKS
Group=THROW
CheckSynopsis="There are calls to functions explicitly declared to throw an exception type that is not handled (or declared as thrown) by the caller."
LongDesc="There are calls to functions explicitly declared to throw an exception type that is not handled (or declared as thrown) by the caller. If an application throws an unhandled exception, it terminates in an implementation-defined manner. In particular, it is implementation-defined whether the call stack is unwound before termination, so the destructors of any automatic objects might not be invoked.  If an exception is thrown as an object of a derived class, a compatible type might be either the derived class or any of its bases.  Make sure that the application catches all exceptions it is expected to throw."
Severity=Medium
IdenticalTo=MISRAC++2008-15-3-4
Default=on
Visible=Yes

CheckName=UNION-overlap-assign
Package=STDCHECKS
Group=UNION
CheckSynopsis="Assignments from one field of a union to another."
LongDesc="There are assignments from one field of a union to another. Assignments between objects that are stored in the same physical memory causes undefined behavior."
Severity=High
IdenticalTo=MISRAC2004-18.2 MISRAC++2008-0-2-1 MISRAC2012-Rule-19.1 MISRAC++2023-8.18.1
Default=on
Visible=Yes

CheckName=UNION-type-punning
Package=STDCHECKS
Group=UNION
CheckSynopsis="Writing to a field of a union after reading from a different field, effectively re-interpreting the bit pattern with a different type."
LongDesc="Writing to one field of a union and then silently reading from another field circumvents the type system.  To reinterpret bit patterns deliberately, use an explicit cast."
Severity=Medium
IdenticalTo=MISRAC2004-12.12_a
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_a
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=ARR-inv-index MISRAC++2008-5-0-16_c MISRAC2012-Rule-18.1_a
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_b
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=ARR-inv-index-pos MISRAC++2008-5-0-16_d MISRAC2012-Rule-18.1_b
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_c
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=ARR-inv-index-ptr MISRAC++2008-5-0-16_e MISRAC2012-Rule-18.1_c
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_d
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=ARR-inv-index-ptr-pos MISRAC++2008-5-0-16_f MISRAC2012-Rule-18.1_d
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_e
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=ARR-neg-index
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_f
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=ARR-uninit-index
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_g
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_h
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_i
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR30-C_j
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not form or use out-of-bounds pointers or array subscripts."
LongDesc="Invalid pointer operations could lead to undefined behavior.  These include forming an out-of-bounds pointer or array index,  dereferencing a past-the-end pointer or array index,  accessing or generating a pointer past flexible array member,  and null pointer arithmetic."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR32-C
Package=CERT
Group=CERT-ARR
CheckSynopsis="Ensure size arguments for variable length arrays are in a valid range."
LongDesc="If a variable length arrays (VLA) is declared with a size that is not  positive, the behavior is undefined. If the magnitude of a VLA size  argument is excessive, the program may behave in an unexpected way.  The programmer must ensure that size arguments to variable length arrays,  especially those derived from untrusted data, are in a valid range."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR36-C_a
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not subtract two pointers that do not refer to the same array."
LongDesc="Do not subtract or compare two pointers that do not refer to the same array."
Severity=Medium
IdenticalTo=MISRAC2004-17.2 MISRAC2012-Rule-18.2
Default=on
Visible=Yes

CheckName=CERT-ARR36-C_b
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not compare two pointers that do not refer to the same array."
LongDesc="Do not subtract or compare two pointers that do not refer to the same array."
Severity=Medium
IdenticalTo=MISRAC2004-17.3 MISRAC2012-Rule-18.3
Default=on
Visible=Yes

CheckName=CERT-ARR37-C
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not add or subtract an integer to a pointer to a non-array object."
LongDesc="Pointer arithmetic must be performed only on pointers that reference elements  of array objects."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR38-C_a
Package=CERT
Group=CERT-ARR
CheckSynopsis="Guarantee that library functions do not form invalid pointers."
LongDesc="C library functions that make changes to arrays or objects take  at least two arguments: a pointer to the array or object and an  integer indicating the number of elements or bytes to be  manipulated. Supplying arguments to such a function might cause  the function to form a pointer that does not point into or just  past the end of the object, resulting in undefined behavior."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR38-C_b
Package=CERT
Group=CERT-ARR
CheckSynopsis="Guarantee that library functions do not form invalid pointers."
LongDesc="C library functions that make changes to arrays or objects take  at least two arguments: a pointer to the array or object and an  integer indicating the number of elements or bytes to be  manipulated. Supplying arguments to such a function might cause  the function to form a pointer that does not point into or just  past the end of the object, resulting in undefined behavior."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR38-C_c
Package=CERT
Group=CERT-ARR
CheckSynopsis="Guarantee that library functions do not form invalid pointers."
LongDesc="C library functions that make changes to arrays or objects take  at least two arguments: a pointer to the array or object and an  integer indicating the number of elements or bytes to be  manipulated. Supplying arguments to such a function might cause  the function to form a pointer that does not point into or just  past the end of the object, resulting in undefined behavior."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR38-C_d
Package=CERT
Group=CERT-ARR
CheckSynopsis="Guarantee that library functions do not form invalid pointers."
LongDesc="C library functions that make changes to arrays or objects take  at least two arguments: a pointer to the array or object and an  integer indicating the number of elements or bytes to be  manipulated. Supplying arguments to such a function might cause  the function to form a pointer that does not point into or just  past the end of the object, resulting in undefined behavior."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR38-C_e
Package=CERT
Group=CERT-ARR
CheckSynopsis="Guarantee that library functions do not form invalid pointers."
LongDesc="C library functions that make changes to arrays or objects take  at least two arguments: a pointer to the array or object and an  integer indicating the number of elements or bytes to be  manipulated. Supplying arguments to such a function might cause  the function to form a pointer that does not point into or just  past the end of the object, resulting in undefined behavior."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR38-C_f
Package=CERT
Group=CERT-ARR
CheckSynopsis="Guarantee that library functions do not form invalid pointers."
LongDesc="C library functions that make changes to arrays or objects take  at least two arguments: a pointer to the array or object and an  integer indicating the number of elements or bytes to be  manipulated. Supplying arguments to such a function might cause  the function to form a pointer that does not point into or just  past the end of the object, resulting in undefined behavior."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ARR39-C
Package=CERT
Group=CERT-ARR
CheckSynopsis="Do not add or subtract a scaled integer to a pointer."
LongDesc="When performing pointer arithmetic, the size of the  value to add to or subtract from a pointer is  automatically scaled to the size of the type of the  referenced array object. Adding or subtracting a scaled  integer value to or from a pointer is invalid because  it may yield a pointer that does not point to an element  within or one past the end of the array."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-DCL04-C
Package=CERT
Group=CERT-DCL
CheckSynopsis="Do not declare more than one variable per declaration."
LongDesc="Multiple variables in a single declaration may cause a developer to misinterpret  code when it comes to the type of such variables"
Severity=Low
IdenticalTo=MISRAC++2008-8-0-1 MISRAC++2023-10.0.1
Default=on
Visible=Yes

CheckName=CERT-DCL30-C_a
Package=CERT
Group=CERT-DCL
CheckSynopsis="Declare objects with appropriate storage durations."
LongDesc="Every object has a storage duration that determines its lifetime: static, thread,  automatic, or allocated. Do not attempt to access an object outside of its lifetime.  Attempting to do so is undefined behavior and can lead to an exploitable  vulnerability."
Severity=High
IdenticalTo=MEM-stack MISRAC++2008-7-5-1_b MISRAC++2023-6.8.2_b MISRAC2004-17.6_a MISRAC2012-Rule-18.6_a
Default=on
Visible=Yes

CheckName=CERT-DCL30-C_b
Package=CERT
Group=CERT-DCL
CheckSynopsis="Declare objects with appropriate storage durations."
LongDesc="Every object has a storage duration that determines its lifetime: static, thread,  automatic, or allocated. Do not attempt to access an object outside of its lifetime.  Attempting to do so is undefined behavior and can lead to an exploitable  vulnerability."
Severity=High
IdenticalTo=MEM-stack-pos
Default=on
Visible=Yes

CheckName=CERT-DCL30-C_c
Package=CERT
Group=CERT-DCL
CheckSynopsis="Declare objects with appropriate storage durations."
LongDesc="Every object has a storage duration that determines its lifetime: static, thread,  automatic, or allocated. Do not attempt to access an object outside of its lifetime.  Attempting to do so is undefined behavior and can lead to an exploitable  vulnerability."
Severity=High
IdenticalTo=MEM-stack-global MISRAC++2008-7-5-2_a MISRAC++2023-6.8.3_a MISRAC2004-17.6_b MISRAC2012-Rule-18.6_b CERT-DCL30-C_c
Default=on
Visible=Yes

CheckName=CERT-DCL30-C_d
Package=CERT
Group=CERT-DCL
CheckSynopsis="Declare objects with appropriate storage durations."
LongDesc="Every object has a storage duration that determines its lifetime: static, thread,  automatic, or allocated. Do not attempt to access an object outside of its lifetime.  Attempting to do so is undefined behavior and can lead to an exploitable  vulnerability."
Severity=High
IdenticalTo=MEM-stack-global-field MISRAC++2008-7-5-2_b MISRAC++2023-6.8.3_b MISRAC2004-17.6_c MISRAC2012-Rule-18.6_c
Default=on
Visible=Yes

CheckName=CERT-DCL30-C_e
Package=CERT
Group=CERT-DCL
CheckSynopsis="Declare objects with appropriate storage durations."
LongDesc="Every object has a storage duration that determines its lifetime: static, thread,  automatic, or allocated. Do not attempt to access an object outside of its lifetime.  Attempting to do so is undefined behavior and can lead to an exploitable  vulnerability."
Severity=High
IdenticalTo=MEM-stack-param MISRAC++2008-7-5-2_c MISRAC++2023-6.8.3_c MISRAC2004-17.6_d MISRAC2012-Rule-1.3_s MISRAC2012-Rule-18.6_d
Default=on
Visible=Yes

CheckName=CERT-DCL31-C
Package=CERT
Group=CERT-DCL
CheckSynopsis="Declare identifiers before using them."
LongDesc="The C11 Standard requires type specifiers and forbids implicit function declarations.  The C90 Standard allows implicit typing of variables and functions. Consequently,  some existing legacy code uses implicit typing. Some C compilers still support legacy  code by allowing implicit typing, but it should not be used for new code. Such an  implementation may choose to assume an implicit declaration and continue translation  to support existing programs that used this feature."
Severity=Low
IdenticalTo=FUNC-implicit-decl MISRAC2004-8.1 MISRAC2012-Rule-17.3
Default=on
Visible=Yes

CheckName=CERT-DCL36-C
Package=CERT
Group=CERT-DCL
CheckSynopsis="Do not declare an identifier with conflicting linkage classifications."
LongDesc="Linkage can make an identifier declared in different scopes or declared multiple  times within the same scope refer to the same object or function.  Use of an identifier (within one translation unit) classified as both internally and  externally linked is undefined behavior."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-DCL37-C_a
Package=CERT
Group=CERT-DCL
CheckSynopsis="Do not declare or define a reserved identifier"
LongDesc="Do not define a function with a reserved identifier"
Severity=Low
IdenticalTo=MISRAC++2008-17-0-3 MISRAC2012-Rule-21.2 MISRAC2004-20.2
Default=on
Visible=Yes

CheckName=CERT-DCL37-C_b
Package=CERT
Group=CERT-DCL
CheckSynopsis="Do not declare or define a reserved identifier"
LongDesc="Do not declare or define a reserved identifier"
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-DCL37-C_c
Package=CERT
Group=CERT-DCL
CheckSynopsis="Do not declare or define a reserved identifier"
LongDesc="Do not declare or define a reserved identifier -- Noisy"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=CERT-DCL38-C
Package=CERT
Group=CERT-DCL
CheckSynopsis="Use the correct syntax when declaring a flexible array member."
LongDesc="A variety of different syntaxes have been used for declaring  flexible array members. For conforming C implementations,  use the syntax guaranteed to be valid by the C Standard."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-DCL39-C
Package=CERT
Group=CERT-DCL
CheckSynopsis="Avoid information leakage when passing a structure across a trust boundary."
LongDesc="When passing a pointer to a structure across a trust boundary to a different trusted  domain, the programmer must ensure that the padding bytes and bit-field storage unit  padding bits of such a structure do not contain sensitive information."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-DCL40-C
Package=CERT
Group=CERT-DCL
CheckSynopsis="Do not create incompatible declarations of the same function or object."
LongDesc="Two or more incompatible declarations of the same function or object must  not appear in the same program because they result in undefined behavior."
Severity=Low
IdenticalTo=MISRAC2012-Rule-8.3
Default=on
Visible=Yes

CheckName=CERT-DCL41-C
Package=CERT
Group=CERT-DCL
CheckSynopsis="Do not declare variables inside a switch statement before the first case label"
LongDesc="Do not declare variables inside a switch statement before the first case label"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ENV30-C
Package=CERT
Group=CERT-ENV
CheckSynopsis="Do not modify the object referenced by the return value of certain functions."
LongDesc="Some functions return a pointer to an object that cannot be modified without causing undefined behavior.  These functions include getenv(), setlocale(), localeconv(), asctime(), and strerror().  In such cases, the function call results must be treated as being const-qualified."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ENV31-C
Package=CERT
Group=CERT-ENV
CheckSynopsis="Do not rely on an environment pointer following an operation that may invalidate it"
LongDesc="Modifying the environment by any means may cause the environment memory to be reallocated, invalidating the 'envp' pointer"
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ENV32-C
Package=CERT
Group=CERT-ENV
CheckSynopsis="All exit handlers must return normally"
LongDesc="A nested call to an exit function is undefined behavior. This behavior can occur  when an exit function is invoked from an exit handler or when an exit function  is called from within a signal handler. Exit handlers must terminate by returning.  It is important and potentially safety-critical for all exit handlers to be allowed  to perform their cleanup actions."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ENV33-C
Package=CERT
Group=CERT-ENV
CheckSynopsis="Do not call system()."
LongDesc="Use of the system() function can result in exploitable vulnerabilities, in the  worst case allowing execution of arbitrary system commands. Do not invoke a  command processor via system() or equivalent functions to execute a command."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ENV34-C
Package=CERT
Group=CERT-ENV
CheckSynopsis="Do not store pointers returned by certain functions."
LongDesc="Do not store pointers returned by getenv() and similar  functions because the string data it points to may be  overwritten by a subsequent call to the same function  or invalidated by modifications to the environment.  This string should be referenced immediately and  discarded. If later use is anticipated, the string  should be copied so the copy can be safely referenced  as needed."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR30-C_a
Package=CERT
Group=CERT-ERR
CheckSynopsis="Set errno to zero before calling a library function known to set errno."
LongDesc="The value of errno is initialized to zero at program startup, but it is never  subsequently set to zero by any C standard library function. The value of errno  may be set to nonzero by a C standard library function call whether or not there  is an error, provided the use of errno is not documented in the description of  the function. Therefore, errno should be set to zero before calling an errno-setting  function."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR30-C_b
Package=CERT
Group=CERT-ERR
CheckSynopsis="Check errno only after the function returns a value indicating failure."
LongDesc="It is meaningful for a program to inspect the contents of errno only after an error  might have occurred. More precisely, errno is meaningful only after a library  function that sets errno on error has returned an error code."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR30-C_c
Package=CERT
Group=CERT-ERR
CheckSynopsis="Check errno only after the function called is an errno-setting function."
LongDesc="The value of errno may be set to nonzero by a C standard library function call  whether or not there is an error, provided the use of errno is not documented in the  description of the function. errno should only be checked where a function is documents  its use."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR30-C_d
Package=CERT
Group=CERT-ERR
CheckSynopsis="Check return of errno setting functions for values indicating failure."
LongDesc="It is meaningful to inspect the value of errno only after establishing that the  errno-setting function has returned an error. The return value of these functions  must be inspected."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR30-C_e
Package=CERT
Group=CERT-ERR
CheckSynopsis="Only check errno when neccessary."
LongDesc="For mathematical functions in <math.h>, if the integer  expression math_errhandling & MATH_ERRNO is nonzero, on a domain error,  errno acquires the value EDOM; on an overflow with default rounding or  if the mathematical result is an exact infinity from finite arguments,  errno acquires the value ERANGE; and on an underflow, whether errno  acquires the value ERANGE is implementation-defined.  Functions isnan, isinf, isnormal or isfinite can also be used  to establish that the returned value is invalid."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR32-C
Package=CERT
Group=CERT-ERR
CheckSynopsis="Do not rely on indeterminate values of errno."
LongDesc="A signal handler is allowed to call signal(); if that fails,  signal() returns SIG_ERR and sets errno to a positive value.  However, if the event that caused a signal was external  (not the result of the program calling abort() or raise()),  the only functions the signal handler may call are _Exit()  or abort(), or it may call signal() on the signal currently  being handled; if signal() fails, the value of errno is  indeterminate. Using this value results in undefined behavior."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR33-C_a
Package=CERT
Group=CERT-ERR
CheckSynopsis="Detect and handle standard library errors."
LongDesc="The majority of the standard library functions,  including I/O functions and memory allocation functions,  return either a valid value or a value of the correct  return type that indicates an error (for example, -1 or  a null pointer). It is essential that programs detect  and appropriately handle all errors in accordance with  an error-handling policy.  This check warns on usage of standard library functions  without checking for errors in return value and/or errno."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR33-C_b
Package=CERT
Group=CERT-ERR
CheckSynopsis="Detect and handle standard library errors."
LongDesc="The majority of the standard library functions,  including I/O functions and memory allocation functions,  return either a valid value or a value of the correct  return type that indicates an error (for example, -1 or  a null pointer). It is essential that programs detect  and appropriately handle all errors in accordance with  an error-handling policy.  This check warns on usage of file char I/O standard library  functions without checking for errors when the return  value is EOF."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR33-C_c
Package=CERT
Group=CERT-ERR
CheckSynopsis="Detect and handle standard library errors."
LongDesc="The majority of the standard library functions,  including I/O functions and memory allocation functions,  return either a valid value or a value of the correct  return type that indicates an error (for example, -1 or  a null pointer). It is essential that programs detect  and appropriately handle all errors in accordance with  an error-handling policy.  This check warns on usage of standard library functions  listed in EX1 without checking for errors or explicitly  discard the return value."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR33-C_d
Package=CERT
Group=CERT-ERR
CheckSynopsis="Detect and handle standard library errors."
LongDesc="The majority of the standard library functions,  including I/O functions and memory allocation functions,  return either a valid value or a value of the correct  return type that indicates an error (for example, -1 or  a null pointer). It is essential that programs detect  and appropriately handle all errors in accordance with  an error-handling policy."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR34-C_a
Package=CERT
Group=CERT-ERR
CheckSynopsis="Detect errors when converting a string to a number."
LongDesc="The process of parsing an integer or floating-point  number from a string can produce many errors.  These error conditions must be detected and addressed  when a string-to-number conversion is performed using  a C Standard Library function."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-ERR34-C_b
Package=CERT
Group=CERT-ERR
CheckSynopsis="Detect errors when converting a string to a number."
LongDesc="The process of parsing an integer or floating-point  number from a string can produce many errors.  These error conditions must be detected and addressed  when a string-to-number conversion is performed using  a C Standard Library function."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP19-C
Package=CERT
Group=CERT-EXP
CheckSynopsis="No braces for the body of an if, for, or while statement"
LongDesc="The body of an if, for, or while statement is missing opening and closing braces. Opening and closing braces for if, for, and while statements should always be used even if the statement's body contains only a single statement"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP30-C_a
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not depend on the order of evaluation for side effects."
LongDesc="Evaluation of an expression may produce side effects.  At specific points during execution, known as sequence points,  all side effects of previous evaluations are complete,  and no side effects of subsequent evaluations have yet taken place.  Do not depend on the order of evaluation for side effects unless  there is an intervening sequence point."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-1_a MISRAC2004-12.2_a MISRAC2012-Rule-1.3_i MISRAC2012-Rule-13.2_a SPC-order
Default=on
Visible=Yes

CheckName=CERT-EXP30-C_b
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not depend on the order of evaluation for side effects."
LongDesc="Evaluation of an expression may produce side effects.  At specific points during execution, known as sequence points,  all side effects of previous evaluations are complete,  and no side effects of subsequent evaluations have yet taken place.  Do not depend on the order of evaluation for side effects unless  there is an intervening sequence point."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP32-C
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not access a volatile object through a nonvolatile reference."
LongDesc="An object that has volatile-qualified type may be modified in ways unknown to the  implementation or have other unknown side effects. Referencing a volatile object  by using a non-volatile lvalue is undefined behavior."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP33-C_a
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not read uninitialized memory."
LongDesc="Uninitialized automatic variables or dynamically allocated memory  has indeterminate values, which for objects of some types, can be  a trap representation. Reading such trap representations is  undefined behavior; it can cause a program to behave in an  unexpected manner and provide an avenue for attack."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP33-C_b
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not read uninitialized memory."
LongDesc="Uninitialized automatic variables or dynamically allocated memory  has indeterminate values, which for objects of some types, can be  a trap representation. Reading such trap representations is  undefined behavior; it can cause a program to behave in an  unexpected manner and provide an avenue for attack."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP33-C_c
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not read uninitialized memory."
LongDesc="Uninitialized automatic variables or dynamically allocated memory  has indeterminate values, which for objects of some types, can be  a trap representation. Reading such trap representations is  undefined behavior; it can cause a program to behave in an  unexpected manner and provide an avenue for attack."
Severity=High
IdenticalTo=MISRAC2012-Rule-9.1_a PTR-uninit-pos
Default=on
Visible=Yes

CheckName=CERT-EXP33-C_d
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not read uninitialized memory."
LongDesc="Uninitialized automatic variables or dynamically allocated memory  has indeterminate values, which for objects of some types, can be  a trap representation. Reading such trap representations is  undefined behavior; it can cause a program to behave in an  unexpected manner and provide an avenue for attack."
Severity=High
IdenticalTo=MISRAC2004-1.2_a MISRAC2012-Rule-9.1_b SPC-uninit-arr-all
Default=on
Visible=Yes

CheckName=CERT-EXP33-C_e
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not read uninitialized memory."
LongDesc="Uninitialized automatic variables or dynamically allocated memory  has indeterminate values, which for objects of some types, can be  a trap representation. Reading such trap representations is  undefined behavior; it can cause a program to behave in an  unexpected manner and provide an avenue for attack."
Severity=High
IdenticalTo=MISRAC2004-1.2_b MISRAC2012-Rule-9.1_d SPC-uninit-struct-field
Default=on
Visible=Yes

CheckName=CERT-EXP34-C_a
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not dereference null pointers."
LongDesc="Dereferencing a null pointer is undefined behavior.  On many platforms, dereferencing a null pointer results in abnormal program  termination, but this is not required by the standard."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP34-C_b
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not dereference null pointers."
LongDesc="Dereferencing a null pointer is undefined behavior.  On many platforms, dereferencing a null pointer results in abnormal program  termination, but this is not required by the standard."
Severity=High
IdenticalTo=PTR-null-assign-fun-pos
Default=on
Visible=Yes

CheckName=CERT-EXP34-C_c
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not dereference null pointers."
LongDesc="Dereferencing a null pointer is undefined behavior.  On many platforms, dereferencing a null pointer results in abnormal program  termination, but this is not required by the standard."
Severity=High
IdenticalTo=PTR-null-assign-pos
Default=on
Visible=Yes

CheckName=CERT-EXP34-C_d
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not dereference null pointers."
LongDesc="Dereferencing a null pointer is undefined behavior.  On many platforms, dereferencing a null pointer results in abnormal program  termination, but this is not required by the standard."
Severity=High
IdenticalTo=PTR-null-assign
Default=on
Visible=Yes

CheckName=CERT-EXP34-C_e
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not dereference null pointers."
LongDesc="Dereferencing a null pointer is undefined behavior.  On many platforms, dereferencing a null pointer results in abnormal program  termination, but this is not required by the standard."
Severity=High
IdenticalTo=PTR-null-cmp-aft
Default=on
Visible=Yes

CheckName=CERT-EXP34-C_f
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not dereference null pointers."
LongDesc="Dereferencing a null pointer is undefined behavior.  On many platforms, dereferencing a null pointer results in abnormal program  termination, but this is not required by the standard."
Severity=High
IdenticalTo=PTR-null-cmp-bef-fun
Default=on
Visible=Yes

CheckName=CERT-EXP34-C_g
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not dereference null pointers."
LongDesc="Dereferencing a null pointer is undefined behavior.  On many platforms, dereferencing a null pointer results in abnormal program  termination, but this is not required by the standard."
Severity=High
IdenticalTo=PTR-null-cmp-bef
Default=on
Visible=Yes

CheckName=CERT-EXP35-C
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not modify objects with temporary lifetime"
LongDesc="If a function call returns by value a struct or union containing an array, do not modify those arrays within the expression containing the function call. Do not access an array returned by a function after the next sequence point or after the evaluation of the containing full expression or full declarator ends."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP36-C_a
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not cast pointers into more strictly aligned pointer types."
LongDesc="Do not convert a pointer value to a pointer type that is more  strictly aligned than the referenced type. Different alignments  are possible for different types of objects. If the type-checking  system is overridden by an explicit cast or the pointer is converted  to a void pointer (void *) and then to a different type, the  alignment of an object may be changed."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP36-C_b
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not cast pointers into more strictly aligned pointer types."
LongDesc="Do not convert a pointer value to a pointer type that is more  strictly aligned than the referenced type. Different alignments  are possible for different types of objects. If the type-checking  system is overridden by an explicit cast or the pointer is converted  to a void pointer (void *) and then to a different type, the  alignment of an object may be changed."
Severity=Low
IdenticalTo=MISRAC2012-Rule-11.5
Default=on
Visible=Yes

CheckName=CERT-EXP37-C_a
Package=CERT
Group=CERT-EXP
CheckSynopsis="Call functions with the correct number and type of arguments."
LongDesc="Do not call a function with the wrong number or type of arguments. Undefined behavior (UB) may arise as a result of invoking a function using a declaration  that is incompatible with its definition or by supplying incorrect types or numbers of arguments."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP37-C_b
Package=CERT
Group=CERT-EXP
CheckSynopsis="Call functions with the correct number and type of arguments."
LongDesc="Do not call a function with the wrong number or type of arguments. Undefined behavior (UB) may arise as a result of invoking a function using a declaration  that is incompatible with its definition or by supplying incorrect types or numbers of arguments."
Severity=Medium
IdenticalTo=MISRAC2004-8.3
Default=on
Visible=Yes

CheckName=CERT-EXP37-C_c
Package=CERT
Group=CERT-EXP
CheckSynopsis="Call functions with the correct number and type of arguments."
LongDesc="Do not call a function with the wrong number or type of arguments. Undefined behavior (UB) may arise as a result of invoking a function using a declaration  that is incompatible with its definition or by supplying incorrect types or numbers of arguments."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP39-C_a
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not access a variable through a pointer of an incompatible type."
LongDesc="Modifying a variable through a pointer of an incompatible type (other than unsigned  char) can lead to unpredictable results."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP39-C_b
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not access a variable through a pointer of an incompatible type."
LongDesc="Modifying a variable through a pointer of an incompatible type (other than unsigned  char) can lead to unpredictable results."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-11.1
Default=on
Visible=Yes

CheckName=CERT-EXP39-C_c
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not access a variable through a pointer of an incompatible type."
LongDesc="Modifying a variable through a pointer of an incompatible type (other than unsigned  char) can lead to unpredictable results."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-11.2
Default=on
Visible=Yes

CheckName=CERT-EXP39-C_d
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not access a variable through a pointer of an incompatible type."
LongDesc="Modifying a variable through a pointer of an incompatible type (other than unsigned  char) can lead to unpredictable results."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-11.3
Default=on
Visible=Yes

CheckName=CERT-EXP39-C_e
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not access a variable through a pointer of an incompatible type."
LongDesc="Modifying a variable through a pointer of an incompatible type (other than unsigned  char) can lead to unpredictable results."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-11.7
Default=on
Visible=Yes

CheckName=CERT-EXP40-C_a
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not modify constant objects."
LongDesc="If an attempt is made to modify an object defined with a const-qualified type through use of an lvalue with non-const-qualified type, the behavior is undefined."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP40-C_b
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not modify constant objects."
LongDesc="If an attempt is made to modify an object defined with a const-qualified type through use of an lvalue with non-const-qualified type, the behavior is undefined."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP42-C
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not compare padding data."
LongDesc="Padding values are unspecified, attempting a byte-by-byte comparison between  structures can lead to incorrect results."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP43-C_a
Package=CERT
Group=CERT-EXP
CheckSynopsis="Avoid undefined behavior when using restrict-qualified pointers."
LongDesc="The restrict qualifier requires that the pointers do not reference  overlapping objects. If the objects referenced by arguments to  functions overlap (meaning the objects share some common memory  addresses), the behavior is undefined. "
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP43-C_b
Package=CERT
Group=CERT-EXP
CheckSynopsis="Avoid undefined behavior when using restrict-qualified pointers."
LongDesc="The restrict qualifier requires that the pointers do not reference  overlapping objects. If the objects referenced by arguments to  functions overlap (meaning the objects share some common memory  addresses), the behavior is undefined. "
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP43-C_c
Package=CERT
Group=CERT-EXP
CheckSynopsis="Avoid undefined behavior when using restrict-qualified pointers."
LongDesc="The restrict qualifier requires that the pointers do not reference  overlapping objects. If the objects referenced by arguments to  functions overlap (meaning the objects share some common memory  addresses), the behavior is undefined. "
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP43-C_d
Package=CERT
Group=CERT-EXP
CheckSynopsis="Avoid undefined behavior when using restrict-qualified pointers."
LongDesc="The restrict qualifier requires that the pointers do not reference  overlapping objects. If the objects referenced by arguments to  functions overlap (meaning the objects share some common memory  addresses), the behavior is undefined. "
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP44-C
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not rely on side effects in operands to sizeof, _Alignof, or _Generic."
LongDesc="Some operators do not evaluate their operands beyond the type information the  operands provide. When using one of these operators, do not pass an operand that  would otherwise yield a side effect since the side effect will not be generated.  The sizeof operator yields the size (in bytes) of its operand, which may be an  expression or the parenthesized name of a type.  In most cases, the operand is not  evaluated.  The operand passed to_Alignof is never evaluated, despite not being an expression.  The operand used in the controlling expression of a _Generic selection expression  is never evaluated.  Providing an expression that appears to produce side effects may be misleading to  programmers."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP45-C
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not perform assignments in selection statements"
LongDesc="Do not perform assignments in selection statements"
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP46-C
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not use a bitwise operator with a Boolean-like operand."
LongDesc="Mixing bitwise and relational operators in the same full  expression can be a sign of a logic error in the expression  where a logical operator is usually the intended operator.  Do not use the bitwise AND (&), bitwise OR (|), or bitwise  XOR (^) operators with an operand of type _Bool, or the result  of a relational-expression or equality-expression. "
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP47-C_a
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not call va_arg with an argument of the incorrect type"
LongDesc="Ensure that an invocation of the va_arg() macro does not attempt to access an argument that was not passed to the variadic function. Further, the type passed to the va_arg() macro must match the type passed to the variadic function after default argument promotions have been applied."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-EXP47-C_b
Package=CERT
Group=CERT-EXP
CheckSynopsis="Do not call va_arg with an argument of the incorrect type"
LongDesc="Ensure that an invocation of the va_arg() macro does not attempt to access an argument that was not passed to the variadic function. Further, the type passed to the va_arg() macro must match the type passed to the variadic function after default argument promotions have been applied."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO30-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="Exclude user input from format strings."
LongDesc="Never call a formatted I/O function with a format string containing a tainted value.  An attacker who can fully or partially control the contents of a format string can  crash a vulnerable process, view the contents of the stack, view memory content,  or write to an arbitrary memory location. Consequently, the attacker can execute  arbitrary code with the permissions of the vulnerable process [Seacord 2013b]."
Severity=High
IdenticalTo=SEC-STRING-format-string
Default=on
Visible=Yes

CheckName=CERT-FIO32-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="Do not perform operations on devices that are only appropriate for files"
LongDesc="File names may be used to access special files, which are actually devices.  Performing operations on device files that are intended for ordinary character or  binary files can result in crashes and denial-of-service attacks. Device files in  UNIX can be a security risk when an attacker can access them in an unauthorized  way. It is possible to lock certain applications by attempting to open devices  rather than files."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO34-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="Distinguish between characters read from a file and EOF or WEOF."
LongDesc="On an implementation where int and char have the same width,  a character-reading function can read and return a valid character  that has the same bit-pattern as EOF.  Consequently, failing to use feof() and ferror() to detect end-of-file  and file errors can result in incorrectly identifying the EOF character  on rare implementations where sizeof(int) == sizeof(char)."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO37-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="A string returned by fgets() and fgetsws() might contain NULL characters."
LongDesc="A string returned by fgets() and fgetsws() might contain NULL characters. If the length of this string is then used to access the buffer, it might result in an unexpect integer wrap around leading to an out-of-bounds memory write."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO38-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="A FILE object is copied."
LongDesc="A FILE object is copied. In some C implementations, the address of a FILE object might be used to identify a stream. Using a copy of FILE object might result in unexpected behavior or a crash."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO39-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="Do not alternately input and output from a stream  without an intervening flush or positioning call."
LongDesc="Receiving input from a stream directly following an  output to that stream, or outputting to a stream  after receiving input from that stream, without an  intervening call to fflush(), fseek(), fsetpos(),  or rewind() if the file is not at end-of-file is  undefined behaviour. Consequently, a call to fseek(),  fflush(), or fsetpos() is necessary between input  and output to the same stream."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO40-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="Reset strings on fgets() or fgetws() failure."
LongDesc="If either of the C Standard fgets() or fgetws() functions fail, the contents of  the array being written is indeterminate. (See undefined behavior 170.)  It is  necessary to reset the string to a known value to avoid errors on subsequent  string manipulation functions."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO41-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="Do not call getc(), putc(), getwc(), or putwc() with a stream argument that has side effects."
LongDesc="Do not invoke getc() or putc() or their wide-character analogues getwc() and putwc()  with a stream argument that has side effects. The stream argument passed to these  macros may be evaluated more than once if these functions are implemented as unsafe  macros."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO42-C_a
Package=CERT
Group=CERT-FIO
CheckSynopsis="Close files when they are no longer needed."
LongDesc="A call to the fopen() or freopen() function must be matched  with a call to fclose() before the lifetime of the last  pointer that stores the return value of the call has ended  or before normal program termination, whichever occurs first."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.13_c MISRAC2012-Rule-22.1_b RESOURCE-file-no-close-all SEC-FILEOP-open-no-close
Default=on
Visible=Yes

CheckName=CERT-FIO42-C_b
Package=CERT
Group=CERT-FIO
CheckSynopsis="Close files when they are no longer needed."
LongDesc="A call to the fopen() or freopen() function must be matched  with a call to fclose() before the lifetime of the last  pointer that stores the return value of the call has ended  or before normal program termination, whichever occurs first."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=CERT-FIO44-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="Only use values for fsetpos() that are returned from fgetpos()."
LongDesc="Invoking the fsetpos() function with any other values for pos is undefined behavior."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO45-C
Package=CERT
Group=CERT-FIO
CheckSynopsis="Avoid TOCTOU race conditions while accessing files."
LongDesc="A TOCTOU (time-of-check, time-of-use) race condition is possible when two or more  concurrent processes are operating on a shared file system. A program that performs  two or more file operations on a single file name or path name creates a race  window between the two file operations. This race window comes from the assumption  that the file name or path name refers to the same resource both times. If an  attacker can modify the file, remove it, or replace it with a different file, then  this assumption will not hold."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO46-C_a
Package=CERT
Group=CERT-FIO
CheckSynopsis="Do not access a closed file."
LongDesc="Using the value of a pointer to a FILE object after the associated file is closed  is undefined behavior. Programs that close the standard streams (especially stdout  but also stderr and stdin) must be careful not to use these streams in subsequent  function calls, particularly those that implicitly operate on them (such as  printf(), perror(), and getc())."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO46-C_b
Package=CERT
Group=CERT-FIO
CheckSynopsis="Do not access a closed file."
LongDesc="Using the value of a pointer to a FILE object after the associated file is closed  is undefined behavior."
Severity=Medium
IdenticalTo=RESOURCE-file-use-after-close SEC-FILEOP-use-after-close MISRAC2012-Dir-4.13_f CERT-FIO46-C_b
Default=on
Visible=Yes

CheckName=CERT-FIO46-C_c
Package=CERT
Group=CERT-FIO
CheckSynopsis="Do not access a closed file."
LongDesc="Using the value of a pointer to a FILE object after the associated file is closed  is undefined behavior."
Severity=Medium
IdenticalTo=RESOURCE-double-close
Default=on
Visible=Yes

CheckName=CERT-FIO47-C_a
Package=CERT
Group=CERT-FIO
CheckSynopsis="Use valid format strings."
LongDesc="The formatted output functions (fprintf() and related functions) convert, format,  and print their arguments under control of a format string. The C standard outlines  what format specifiers are valid in a format string. This check will find cases where  a format string specifier is of an invalid form."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO47-C_b
Package=CERT
Group=CERT-FIO
CheckSynopsis="Use valid format strings."
LongDesc="The formatted output functions (fprintf() and related functions) convert, format,  and print their arguments under control of a format string. The C standard outlines  what format specifiers are valid in a format string. This check will find cases where  the types of the arguments to a format string function do not match the format string  specifiers."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FIO47-C_c
Package=CERT
Group=CERT-FIO
CheckSynopsis="Use valid format strings."
LongDesc="The formatted output functions (fprintf() and related functions) convert, format,  and print their arguments under control of a format string. The C standard outlines  what format specifiers are valid in a format string. This check will find cases where  the number of arguments to a format string function is invalid."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FLP30-C_a
Package=CERT
Group=CERT-FLP
CheckSynopsis="Do not use floating-point variables as loop counters"
LongDesc="Because floating-point numbers represent real numbers, it is  often mistakenly assumed that they can represent any simple  fraction exactly. Floating-point numbers are subject to  representational limitations just as integers are, and binary  floating-point numbers cannot represent all real numbers  exactly, even if they can be represented in a small number of  decimal digits."
Severity=Low
IdenticalTo=MISRAC2012-Rule-14.1_a MISRAC++2008-6-5-1_a
Default=on
Visible=Yes

CheckName=CERT-FLP30-C_b
Package=CERT
Group=CERT-FLP
CheckSynopsis="Do not use floating-point variables as loop counters"
LongDesc="Because floating-point numbers represent real numbers, it is  often mistakenly assumed that they can represent any simple  fraction exactly. Floating-point numbers are subject to  representational limitations just as integers are, and binary  floating-point numbers cannot represent all real numbers  exactly, even if they can be represented in a small number of  decimal digits."
Severity=Low
IdenticalTo=MISRAC2012-Rule-14.1_b
Default=on
Visible=Yes

CheckName=CERT-FLP32-C_a
Package=CERT
Group=CERT-FLP
CheckSynopsis="Prevent or detect domain and range errors in math functions."
LongDesc="Programmers can prevent domain and pole errors by carefully bounds-checking the  arguments before calling mathematical functions and taking alternative action if the  bounds are violated."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FLP32-C_b
Package=CERT
Group=CERT-FLP
CheckSynopsis="Prevent or detect domain and range errors in math functions."
LongDesc="Range errors usually cannot be prevented because they are dependent on the  implementation of floating-point numbers as well as on the function being applied.  Instead of preventing range errors, programmers should attempt to detect them and  take alternative action if a range error occurs."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FLP34-C
Package=CERT
Group=CERT-FLP
CheckSynopsis="Ensure that floating-point conversions are within range of the new type"
LongDesc="If a floating-point value is to be converted to a floating-point value of a smaller range and precision or to an integer type, or if an integer type is to be converted to a floating-point type, the value must be representable in the destination type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FLP36-C
Package=CERT
Group=CERT-FLP
CheckSynopsis="Preserve precision when converting integral values to  floating-point type."
LongDesc="Narrower arithmetic types can be cast to wider types  without any effect on the magnitude of numeric values.  However, whereas integer types represent exact values,  floating-point types have limited precision. Conversion  from integral types to floating-point types without  sufficient precision can lead to loss of precision  (loss of least significant bits)."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-FLP37-C
Package=CERT
Group=CERT-FLP
CheckSynopsis="Do not use object representations to compare floating-point values."
LongDesc="Do not compare floating-point object representations directly, such as by calling  memcmp() or its moral equivalents. Instead, the equality operators (== and !=)  should be used to determine if two floating-point values are equivalent."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-INT30-C_a
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that unsigned integer operations do not wrap."
LongDesc="Unsigned integer operations can wrap if the resulting  value cannot be represented by the underlying representation  of the integer. Integer values must not be allowed to wrap.  This check warns if they are used in any of the following ways:  integer operands of any pointer arithmetic, including array indexing;  the assignment expression for the declaration of a variable length array;  the postfix expression preceding square brackets [] or the expression  in square brackets [] of a subscripted designation of an element  of an array object;  function arguments of type size_t or rsize_t."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-INT30-C_b
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that unsigned integer operations do not wrap."
LongDesc="Unsigned integer operations can wrap if the resulting  value cannot be represented by the underlying representation  of the integer. Integer values must not be allowed to wrap.  This check warns on other wrapping cases except the ones  already covered by CERT-INT30-C_a."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=CERT-INT31-C_a
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that integer conversions do not result in lost or misinterpreted data."
LongDesc="Integer conversions, both implicit and explicit (using a cast),  must be guaranteed not to result in lost or misinterpreted data.  This is particularly true for integer values that originate from  untrusted sources and are used in pointer arithmetic, variable length array  declaration, array subscription, and library function arguments  that are of unsigned char types or represent sizes."
Severity=High
IdenticalTo=ATH-overflow-cast
Default=on
Visible=Yes

CheckName=CERT-INT31-C_b
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that integer conversions do not result in lost or misinterpreted data."
LongDesc="Integer conversions, both implicit and explicit (using a cast),  must be guaranteed not to result in lost or misinterpreted data.  This is particularly true for integer values that originate from  untrusted sources and are used in pointer arithmetic, variable length array  declaration, array subscription, and library function arguments  that are of unsigned char types or represent sizes."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-INT31-C_c
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that integer conversions do not result in lost or misinterpreted data."
LongDesc="Integer conversions, both implicit and explicit (using a cast),  must be guaranteed not to result in lost or misinterpreted data.  This is particularly true for integer values that originate from  untrusted sources and are used in pointer arithmetic, variable length array  declaration, array subscription, and library function arguments  that are of unsigned char types or represent sizes."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-INT32-C_a
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that operations on signed integers do not result in overflow."
LongDesc="Integer operations will overflow if the resulting value cannot be  represented by the underlying representation of the integer.  Signed integer overflow is undefined behavior. It is important to  ensure that operations on signed integers do not result in  overflow.  This check warns if they are used in any of the following ways:  integer operands of any pointer arithmetic, including array indexing;  the assignment expression for the declaration of a variable length array;  the postfix expression preceding square brackets [] or the expression  in square brackets [] of a subscripted designation of an element  of an array object;  function arguments of type size_t or rsize_t."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-INT32-C_b
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that operations on signed integers do not result in overflow."
LongDesc="Integer operations will overflow if the resulting value cannot be  represented by the underlying representation of the integer.  Signed integer overflow is undefined behavior. It is important to  ensure that operations on signed integers do not result in  overflow.  This check warns on other wrapping cases except the ones  already covered by CERT-INT32-C_a."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=CERT-INT33-C_a
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that division and remainder operations do not result in divide-by-zero errors."
LongDesc="The result of the / operator is the quotient from the division of the first  arithmetic operand by the second arithmetic operand. Division operations are  susceptible to divide-by-zero errors. Overflow can also occur during two's complement  signed integer division when the dividend is equal to the minimum (most negative) value  for the signed integer type and the divisor is equal to -1."
Severity=Low
IdenticalTo=ATH-div-0-assign MISRAC2004-1.2_d MISRAC2012-Rule-1.3_b
Default=on
Visible=Yes

CheckName=CERT-INT33-C_b
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that division and remainder operations do not result in divide-by-zero errors."
LongDesc="The result of the / operator is the quotient from the division of the first  arithmetic operand by the second arithmetic operand. Division operations are  susceptible to divide-by-zero errors. Overflow can also occur during two's complement  signed integer division when the dividend is equal to the minimum (most negative) value  for the signed integer type and the divisor is equal to -1."
Severity=Low
IdenticalTo=ATH-div-0-cmp-aft MISRAC2004-1.2_e MISRAC2012-Rule-1.3_c SEC-DIV-0-compare-after
Default=on
Visible=Yes

CheckName=CERT-INT33-C_c
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that division and remainder operations do not result in divide-by-zero errors."
LongDesc="The result of the / operator is the quotient from the division of the first  arithmetic operand by the second arithmetic operand. Division operations are  susceptible to divide-by-zero errors. Overflow can also occur during two's complement  signed integer division when the dividend is equal to the minimum (most negative) value  for the signed integer type and the divisor is equal to -1."
Severity=Low
IdenticalTo=ATH-div-0-cmp-bef MISRAC2004-1.2_f MISRAC2012-Rule-1.3_d SEC-DIV-0-compare-before
Default=on
Visible=Yes

CheckName=CERT-INT33-C_d
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that division and remainder operations do not result in divide-by-zero errors."
LongDesc="The result of the / operator is the quotient from the division of the first  arithmetic operand by the second arithmetic operand. Division operations are  susceptible to divide-by-zero errors. Overflow can also occur during two's complement  signed integer division when the dividend is equal to the minimum (most negative) value  for the signed integer type and the divisor is equal to -1."
Severity=Low
IdenticalTo=ATH-div-0-interval MISRAC2004-1.2_g MISRAC2012-Rule-1.3_e
Default=on
Visible=Yes

CheckName=CERT-INT33-C_e
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that division and remainder operations do not result in divide-by-zero errors."
LongDesc="The result of the / operator is the quotient from the division of the first  arithmetic operand by the second arithmetic operand. Division operations are  susceptible to divide-by-zero errors. Overflow can also occur during two's complement  signed integer division when the dividend is equal to the minimum (most negative) value  for the signed integer type and the divisor is equal to -1."
Severity=Low
IdenticalTo=ATH-div-0-pos MISRAC2004-1.2_h MISRAC2012-Rule-1.3_f
Default=on
Visible=Yes

CheckName=CERT-INT33-C_f
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that division and remainder operations do not result in divide-by-zero errors."
LongDesc="The result of the / operator is the quotient from the division of the first  arithmetic operand by the second arithmetic operand. Division operations are  susceptible to divide-by-zero errors. Overflow can also occur during two's complement  signed integer division when the dividend is equal to the minimum (most negative) value  for the signed integer type and the divisor is equal to -1."
Severity=Low
IdenticalTo=ATH-div-0-unchk-global MISRAC2004-1.2_i MISRAC2012-Rule-1.3_g
Default=on
Visible=Yes

CheckName=CERT-INT33-C_g
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that division and remainder operations do not result in divide-by-zero errors."
LongDesc="The result of the / operator is the quotient from the division of the first  arithmetic operand by the second arithmetic operand. Division operations are  susceptible to divide-by-zero errors. Overflow can also occur during two's complement  signed integer division when the dividend is equal to the minimum (most negative) value  for the signed integer type and the divisor is equal to -1."
Severity=Low
IdenticalTo=ATH-div-0-unchk-local MISRAC2004-1.2_j MISRAC2012-Rule-1.3_h
Default=on
Visible=Yes

CheckName=CERT-INT33-C_h
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that division and remainder operations do not result in divide-by-zero errors."
LongDesc="The result of the / operator is the quotient from the division of the first  arithmetic operand by the second arithmetic operand. Division operations are  susceptible to divide-by-zero errors. Overflow can also occur during two's complement  signed integer division when the dividend is equal to the minimum (most negative) value  for the signed integer type and the divisor is equal to -1."
Severity=Low
IdenticalTo=ATH-div-0-unchk-param
Default=on
Visible=Yes

CheckName=CERT-INT33-C_i
Package=CERT
Group=CERT-INT
CheckSynopsis="Ensure that division and remainder operations do not result in divide-by-zero errors."
LongDesc="The result of the / operator is the quotient from the division of the first  arithmetic operand by the second arithmetic operand. Division operations are  susceptible to divide-by-zero errors. Overflow can also occur during two's complement  signed integer division when the dividend is equal to the minimum (most negative) value  for the signed integer type and the divisor is equal to -1."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-INT34-C_a
Package=CERT
Group=CERT-INT
CheckSynopsis="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."
LongDesc="Bitwise shifts include left-shift operations of the form shift-expression <<  additive-expression and right-shift operations of the form shift-expression >>  additive-expression. The standard integer promotions are first performed on the  operands, each of which has an integer type. The type of the result is that of the  promoted left operand. If the value of the right operand is negative or is greater  than or equal to the width of the promoted left operand, the behavior is undefined.  Do not shift an expression by a negative number of bits or by a number greater than  or equal to the precision of the promoted left operand."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-INT34-C_b
Package=CERT
Group=CERT-INT
CheckSynopsis="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."
LongDesc="Bitwise shifts include left-shift operations of the form shift-expression <<  additive-expression and right-shift operations of the form shift-expression >>  additive-expression. The standard integer promotions are first performed on the  operands, each of which has an integer type. The type of the result is that of the  promoted left operand. If the value of the right operand is negative or is greater  than or equal to the width of the promoted left operand, the behavior is undefined.  Do not shift an expression by a negative number of bits or by a number greater than  or equal to the precision of the promoted left operand."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-INT34-C_c
Package=CERT
Group=CERT-INT
CheckSynopsis="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."
LongDesc="Bitwise shifts include left-shift operations of the form shift-expression <<  additive-expression and right-shift operations of the form shift-expression >>  additive-expression. The standard integer promotions are first performed on the  operands, each of which has an integer type. The type of the result is that of the  promoted left operand. If the value of the right operand is negative or is greater  than or equal to the width of the promoted left operand, the behavior is undefined.  Do not shift an expression by a negative number of bits or by a number greater than  or equal to the precision of the promoted left operand."
Severity=Low
IdenticalTo=ATH-shift-neg
Default=on
Visible=Yes

CheckName=CERT-INT35-C
Package=CERT
Group=CERT-INT
CheckSynopsis="Use correct integer precisions."
LongDesc="Integer types in C have both a size and a precision.  Padding bits contribute to the integer's size, but not  to its precision. Consequently, inferring the precision  of an integer type from its size may result in too large  a value, which can then lead to incorrect assumptions  about the numeric range of these types."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-INT36-C
Package=CERT
Group=CERT-INT
CheckSynopsis="Converting a pointer to integer or integer to pointer."
LongDesc="Although programmers often use integers and pointers interchangeably in C,  pointer-to-integer and integer-to-pointer conversions are implementation-defined.  Conversions between integers and pointers can have undesired consequences depending  on the implementation."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MEM30-C_a
Package=CERT
Group=CERT-MEM
CheckSynopsis="Do not access freed memory."
LongDesc="Evaluating a pointer-including dereferencing the pointer,  using it as an operand of an arithmetic operation,  type casting it, and using it as the right-hand side of  an assignment-into memory that has been deallocated by a  memory management function is undefined behavior."
Severity=High
IdenticalTo=MISRAC2012-Dir-4.13_d MISRAC2012-Rule-1.3_o SEC-BUFFER-use-after-free-all MEM-use-free-all
Default=on
Visible=Yes

CheckName=CERT-MEM30-C_b
Package=CERT
Group=CERT-MEM
CheckSynopsis="Do not access freed memory."
LongDesc="Evaluating a pointer-including dereferencing the pointer,  using it as an operand of an arithmetic operation,  type casting it, and using it as the right-hand side of  an assignment-into memory that has been deallocated by a  memory management function is undefined behavior."
Severity=High
IdenticalTo=MISRAC2012-Dir-4.13_e MISRAC2012-Rule-1.3_p SEC-BUFFER-use-after-free-some MEM-use-free-some
Default=on
Visible=Yes

CheckName=CERT-MEM30-C_c
Package=CERT
Group=CERT-MEM
CheckSynopsis="Do not access freed memory."
LongDesc="Evaluating a pointer-including dereferencing the pointer,  using it as an operand of an arithmetic operation,  type casting it, and using it as the right-hand side of  an assignment-into memory that has been deallocated by a  memory management function is undefined behavior."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MEM31-C
Package=CERT
Group=CERT-MEM
CheckSynopsis="Free dynamically allocated memory when no longer needed."
LongDesc="Before the lifetime of the last pointer that stores the return  value of a call to a standard memory allocation function has ended,  it must be matched by a call to free() with that pointer value."
Severity=Medium
IdenticalTo=MEM-leak MISRAC2012-Rule-22.1_a SEC-BUFFER-memory-leak
Default=on
Visible=Yes

CheckName=CERT-MEM33-C_a
Package=CERT
Group=CERT-MEM
CheckSynopsis="Allocate and copy structures containing a flexible array member dynamically."
LongDesc="Unless the appropriate size of the flexible array member has been explicitly  added when allocating storage for an object of the struct, the result of accessing  the member data of a variable of non-pointer type struct flex_array_struct is  undefined. To avoid the potential for undefined behavior, structures that contain a  flexible array member should always be allocated dynamically."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MEM33-C_b
Package=CERT
Group=CERT-MEM
CheckSynopsis="Allocate and copy structures containing a flexible array member dynamically."
LongDesc="Unless the appropriate size of the flexible array member has been explicitly  added when allocating storage for an object of the struct, the result of accessing  the member data of a variable of non-pointer type struct flex_array_struct is  undefined. To avoid the potential for undefined behavior, structures that contain a  flexible array member should always be allocated dynamically."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MEM34-C_a
Package=CERT
Group=CERT-MEM
CheckSynopsis="Only free memory allocated dynamically."
LongDesc="Freeing memory that is not allocated dynamically can  result in heap corruption and other serious errors."
Severity=High
IdenticalTo=MEM-free-variable MISRAC2012-Rule-22.2_c
Default=on
Visible=Yes

CheckName=CERT-MEM34-C_b
Package=CERT
Group=CERT-MEM
CheckSynopsis="Only free memory allocated dynamically."
LongDesc="Freeing memory that is not allocated dynamically can  result in heap corruption and other serious errors."
Severity=High
IdenticalTo=MEM-free-field
Default=on
Visible=Yes

CheckName=CERT-MEM34-C_c
Package=CERT
Group=CERT-MEM
CheckSynopsis="Only free memory allocated dynamically."
LongDesc="Freeing memory that is not allocated dynamically can  result in heap corruption and other serious errors."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MEM35-C_a
Package=CERT
Group=CERT-MEM
CheckSynopsis="Allocate sufficient memory for an object."
LongDesc="The types of integer expressions used as size arguments to malloc(), calloc(),  realloc(), or aligned_alloc() must have sufficient range to represent the size of  the objects to be stored. If size arguments are incorrect or can be manipulated by  an attacker, then a buffer overflow may occur."
Severity=High
IdenticalTo=MEM-malloc-sizeof-ptr
Default=on
Visible=Yes

CheckName=CERT-MEM35-C_b
Package=CERT
Group=CERT-MEM
CheckSynopsis="Allocate sufficient memory for an object."
LongDesc="The types of integer expressions used as size arguments to malloc(), calloc(),  realloc(), or aligned_alloc() must have sufficient range to represent the size of  the objects to be stored. If size arguments are incorrect or can be manipulated by  an attacker, then a buffer overflow may occur."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MEM35-C_c
Package=CERT
Group=CERT-MEM
CheckSynopsis="Allocate sufficient memory for an object."
LongDesc="The types of integer expressions used as size arguments to malloc(), calloc(),  realloc(), or aligned_alloc() must have sufficient range to represent the size of  the objects to be stored. If size arguments are incorrect or can be manipulated by  an attacker, then a buffer overflow may occur."
Severity=High
IdenticalTo=MEM-realloc-diff-type
Default=on
Visible=Yes

CheckName=CERT-MEM36-C
Package=CERT
Group=CERT-MEM
CheckSynopsis="Do not modify the alignment of objects by calling realloc()."
LongDesc="Do not invoke realloc() to modify the size of allocated  objects that have stricter alignment requirements than  those guaranteed by malloc(). Storage allocated by a call  to the standard aligned_alloc() function, for example,  can have stricter than normal alignment requirements.  The C standard requires only that a pointer returned by  realloc() be suitably aligned so that it may be assigned  to a pointer to any type of object with a fundamental  alignment requirement."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC30-C
Package=CERT
Group=CERT-MSC
CheckSynopsis="Do not use the rand() function for generating pseudorandom numbers"
LongDesc="The C Standard rand() function makes no guarantees as to the  quality of the random sequence produced. The numbers generated  by some implementations of rand() have a comparatively short  cycle and the numbers can be predictable. Applications that  have strong pseudorandom number requirements must use a  generator that is known to be sufficient for their needs."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC32-C
Package=CERT
Group=CERT-MSC
CheckSynopsis="Properly seed pseudorandom number generators"
LongDesc="Calling a PRNG in the same initial state, either without  seeding it explicitly or by seeding it with the same value,  results in generating the same sequence of random numbers in  different runs of the program.A long description goes here."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC33-C
Package=CERT
Group=CERT-MSC
CheckSynopsis="Do not pass invalid data to the asctime() function."
LongDesc="The implementation of asctime may assume that the values of the struct tm data are within  normal ranges and does nothing to enforce the range limit. If any of the values print  more characters than expected, the sprintf() function may overflow the result array."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=CERT-MSC37-C
Package=CERT
Group=CERT-MSC
CheckSynopsis="Ensure that control never reaches the end of a non-void function"
LongDesc="If control reaches the closing curly brace (}) of a non-void function without  evaluating a return statement, using the return value of the function call is  undefined behavior."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC38-C
Package=CERT
Group=CERT-MSC
CheckSynopsis="Do not treat a predefined identifier as an object if it might only be implemented as a macro"
LongDesc="Do not suppress standard library macros that yields undefined behavior by accessing  the underlying function"
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC39-C
Package=CERT
Group=CERT-MSC
CheckSynopsis="Do not call va_arg() on a va_list that has an indeterminate value"
LongDesc="Variadic functions access their variable arguments by using va_start() to  initialize an object of type va_list, iteratively invoking the va_arg() macro,  and finally calling va_end(). The va_list may be passed as an argument to another  function, but calling va_arg() within that function causes the va_list to have an  indeterminate value in the calling function. As a result, attempting to read  variable arguments without reinitializing the va_list can have unexpected behavior."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC40-C_a
Package=CERT
Group=CERT-MSC
CheckSynopsis="Do not violate constraints."
LongDesc="The C Standard, 6.7.4, paragraph 3 outlines the following constraint: An inline definition of a function with external linkage shall not contain a  definition of a modifiable object with static or thread storage duration, and shall  not contain a reference to an identifier with internal linkage.  This check finds cases where a static object is referenced in an inline function."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC40-C_b
Package=CERT
Group=CERT-MSC
CheckSynopsis="Do not violate constraints."
LongDesc="The C Standard, 6.7.4, paragraph 3 outlines the following constraint: An inline definition of a function with external linkage shall not contain a  definition of a modifiable object with static or thread storage duration, and shall  not contain a reference to an identifier with internal linkage.  This check finds cases where a static object is declared in an inline function."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC40-C_c
Package=CERT
Group=CERT-MSC
CheckSynopsis="Do not violate constraints."
LongDesc="The C Standard, 6.7.2.3, paragraph 2 outlines the following  constraint: a type specifier of the form 'enum identifier'  without an enumerator list shall only appear after the type it  specifies is complete."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC40-C_d
Package=CERT
Group=CERT-MSC
CheckSynopsis="Do not violate constraints."
LongDesc="The C Standard, 6.9.1, paragraph 6 outlines the following  constraint: an identifier declared as a typedef name shall not  be redeclared as a parameter."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC41-C_a
Package=CERT
Group=CERT-MSC
CheckSynopsis="Never hard code sensitive information."
LongDesc="Hard coding sensitive information, such as passwords  or encryption keys can expose the information to  attackers. Anyone who has access to the executable or  dynamic library files can examine them for strings or  other critical data, revealing the sensitive information."
Severity=High
IdenticalTo=SEC-STRING-har-coded-credentials
Default=on
Visible=Yes

CheckName=CERT-MSC41-C_b
Package=CERT
Group=CERT-MSC
CheckSynopsis="Never hard code sensitive information."
LongDesc="Hard coding sensitive information, such as passwords  or encryption keys can expose the information to  attackers. Anyone who has access to the executable or  dynamic library files can examine them for strings or  other critical data, revealing the sensitive information."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-MSC41-C_c
Package=CERT
Group=CERT-MSC
CheckSynopsis="Never hard code sensitive information."
LongDesc="Hard coding sensitive information, such as passwords  or encryption keys can expose the information to  attackers. Anyone who has access to the executable or  dynamic library files can examine them for strings or  other critical data, revealing the sensitive information."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-PRE31-C
Package=CERT
Group=CERT-PRE
CheckSynopsis="Avoid side effects in arguments to unsafe macros."
LongDesc="An unsafe function-like macro is one whose expansion  results in evaluating one of its parameters more than  once or not at all. Never invoke an unsafe macro with  arguments containing side effects."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-PRE32-C_a
Package=CERT
Group=CERT-PRE
CheckSynopsis="Do not use preprocessor directives in invocations of function-like macros."
LongDesc="The arguments to a macro must not include preprocessor directives, such as #define,  #ifdef, and #include. Doing so results in undefined behavior.  This rule also applies to the use of preprocessor directives in arguments to a  function where it is unknown whether or not the function is implemented using a macro."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-PRE32-C_b
Package=CERT
Group=CERT-PRE
CheckSynopsis="Do not use preprocessor directives in invocations of function-like macros."
LongDesc="The arguments to a macro must not include preprocessor directives, such as #define,  #ifdef, and #include. Doing so results in undefined behavior.  This rule also applies to the use of preprocessor directives in arguments to a  function where it is unknown whether or not the function is implemented using a macro."
Severity=Low
IdenticalTo=MISRAC2012-Rule-20.6_b MISRAC++2023-19.3.5_b
Default=on
Visible=Yes

CheckName=CERT-SIG30-C
Package=CERT
Group=CERT-SIG
CheckSynopsis="Call only asynchronous-safe functions within signal handlers"
LongDesc="Program behavior is undefined if the signal handler calls any  function in the standard library that is not asynchronous-safe."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-SIG31-C
Package=CERT
Group=CERT-SIG
CheckSynopsis="Shared objects in a signal handler are accessed or modified."
LongDesc="Accessing or modifying shared objects (not of the type volatile sig_atomic_t) in a signal handler might result in race conditions that can leave data in an inconsistent state."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-SIG34-C
Package=CERT
Group=CERT-SIG
CheckSynopsis="Do not call signal() from within interruptible signal handlers."
LongDesc="A signal handler should not reassert its desire to handle its own signal."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-SIG35-C
Package=CERT
Group=CERT-SIG
CheckSynopsis="Do not return from a computational exception signal handler."
LongDesc="If a signal handler returns when it has been entered as a result of a computational  exception (that is, with the value of its argument of SIGFPE, SIGILL, SIGSEGV, or  any other implementation-defined value corresponding to such an exception) returns,  then the behavior is undefined."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-STR30-C
Package=CERT
Group=CERT-STR
CheckSynopsis="Do not attempt to modify string literals."
LongDesc="String literals are arrays of static storage duration.  It is unspecified whether these arrays are distinct from each other.  The behavior is undefined if a program attempts to modify any portion of a string literal."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-STR31-C_a
Package=CERT
Group=CERT-STR
CheckSynopsis="Guarantee that storage for strings has sufficient space for character data and  the null terminator."
LongDesc="Copying data to a buffer that is not large enough to hold that data results in a  buffer overflow. Buffer overflows occur frequently when manipulating strings. To  prevent such errors, either limit copies through truncation or, preferably, ensure  that the destination is of sufficient size to hold the character data to be copied  and the null-termination character."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-STR31-C_b
Package=CERT
Group=CERT-STR
CheckSynopsis="Guarantee that storage for strings has sufficient space for character data and  the null terminator."
LongDesc="Copying data to a buffer that is not large enough to hold that data results in a  buffer overflow. Buffer overflows occur frequently when manipulating strings. To  prevent such errors, either limit copies through truncation or, preferably, ensure  that the destination is of sufficient size to hold the character data to be copied  and the null-termination character."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-STR31-C_c
Package=CERT
Group=CERT-STR
CheckSynopsis="Guarantee that storage for strings has sufficient space for character data and  the null terminator."
LongDesc="Copying data to a buffer that is not large enough to hold that data results in a  buffer overflow. Buffer overflows occur frequently when manipulating strings. To  prevent such errors, either limit copies through truncation or, preferably, ensure  that the destination is of sufficient size to hold the character data to be copied  and the null-termination character."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-STR31-C_d
Package=CERT
Group=CERT-STR
CheckSynopsis="Guarantee that storage for strings has sufficient space for character data and  the null terminator."
LongDesc="Copying data to a buffer that is not large enough to hold that data results in a  buffer overflow. Buffer overflows occur frequently when manipulating strings. To  prevent such errors, either limit copies through truncation or, preferably, ensure  that the destination is of sufficient size to hold the character data to be copied  and the null-termination character."
Severity=High
IdenticalTo=LIB-strcat-overrun-pos
Default=on
Visible=Yes

CheckName=CERT-STR31-C_e
Package=CERT
Group=CERT-STR
CheckSynopsis="Guarantee that storage for strings has sufficient space for character data and  the null terminator."
LongDesc="Copying data to a buffer that is not large enough to hold that data results in a  buffer overflow. Buffer overflows occur frequently when manipulating strings. To  prevent such errors, either limit copies through truncation or, preferably, ensure  that the destination is of sufficient size to hold the character data to be copied  and the null-termination character."
Severity=High
IdenticalTo=LIB-strcpy-overrun-pos
Default=on
Visible=Yes

CheckName=CERT-STR31-C_f
Package=CERT
Group=CERT-STR
CheckSynopsis="Guarantee that storage for strings has sufficient space for character data and  the null terminator."
LongDesc="Copying data to a buffer that is not large enough to hold that data results in a  buffer overflow. Buffer overflows occur frequently when manipulating strings. To  prevent such errors, either limit copies through truncation or, preferably, ensure  that the destination is of sufficient size to hold the character data to be copied  and the null-termination character."
Severity=High
IdenticalTo=LIB-strncat-overrun-pos
Default=on
Visible=Yes

CheckName=CERT-STR31-C_g
Package=CERT
Group=CERT-STR
CheckSynopsis="Guarantee that storage for strings has sufficient space for character data and  the null terminator."
LongDesc="Copying data to a buffer that is not large enough to hold that data results in a  buffer overflow. Buffer overflows occur frequently when manipulating strings. To  prevent such errors, either limit copies through truncation or, preferably, ensure  that the destination is of sufficient size to hold the character data to be copied  and the null-termination character."
Severity=High
IdenticalTo=LIB-strncmp-overrun-pos
Default=on
Visible=Yes

CheckName=CERT-STR31-C_h
Package=CERT
Group=CERT-STR
CheckSynopsis="Guarantee that storage for strings has sufficient space for character data and  the null terminator."
LongDesc="Copying data to a buffer that is not large enough to hold that data results in a  buffer overflow. Buffer overflows occur frequently when manipulating strings. To  prevent such errors, either limit copies through truncation or, preferably, ensure  that the destination is of sufficient size to hold the character data to be copied  and the null-termination character."
Severity=High
IdenticalTo=LIB-strncpy-overrun-pos
Default=on
Visible=Yes

CheckName=CERT-STR32-C
Package=CERT
Group=CERT-STR
CheckSynopsis="Do not pass a non-null-terminated character sequence to a library function that  expects a string."
LongDesc="Many library functions accept a string or wide string argument with the constraint  that the string they receive is properly null-terminated. Passing a character  sequence or wide character sequence that is not null-terminated to such a function  can result in accessing memory that is outside the bounds of the object. Do not pass  a character sequence or wide character sequence that is not null-terminated to a  library function that expects a string or wide string argument."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-STR34-C
Package=CERT
Group=CERT-STR
CheckSynopsis="Cast characters to unsigned char before converting to larger integer sizes."
LongDesc="Signed character data must be converted to unsigned char before being assigned  or converted to a larger signed type. This rule applies to both signed char and  (plain) char characters on implementations where char is defined to have the same  range, representation, and behaviors as signed char."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-STR37-C
Package=CERT
Group=CERT-STR
CheckSynopsis="Arguments to character-handling functions must be representable  as an unsigned char."
LongDesc="Some standard library character-handling functions have int-typed  arguments, and the value of which shall be representable as an  unsigned char or shall equal the value of the macro EOF. If the  argument has any other value, the behavior is undefined."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=CERT-STR38-C
Package=CERT
Group=CERT-STR
CheckSynopsis="Do not confuse narrow and wide character strings and functions."
LongDesc="Passing narrow string arguments to wide string functions or  wide string arguments to narrow string functions can lead to  unexpected and undefined behavior. Scaling problems are likely  because of the difference in size between wide and narrow  characters."
Severity=Low
IdenticalTo=
Default=on
Visible=No

CheckName=CERT-STYLE-indent-after-brace
Package=CERT
Group=CERT-STYLE
CheckSynopsis="An opening brace ({) was found without an indentation afterward."
LongDesc="Always put a new line and an indentation after an opening brace."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-BUFFER-memory-leak-alias
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A memory leak is caused by incorrect deallocation."
LongDesc="Memory has been allocated, then the pointer value is lost because it is reassigned or its scope ends, without a guarantee that the value will be propagated or the memory be freed.  The value must be freed, returned, or passed to another function as an argument, before it is lost, on all possible execution paths.  Before a pointer is reassigned or its scope ends, the memory it points to must be freed, or a new pointer must be assigned to the memory."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-memory-leak
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A memory leak is caused by incorrect deallocation."
LongDesc="Memory has been allocated, then the pointer value is lost because it is reassigned or its scope ends, without a guarantee that the value will be propagated or the memory be freed.  The value must be freed, returned, or passed to another function as an argument, before it is lost, on all possible execution paths.  Before a pointer is reassigned or its scope ends, the memory it points to must be freed, or a new pointer must be assigned to the memory."
Severity=High
IdenticalTo=MEM-leak MISRAC2012-Rule-22.1_a CERT-MEM31-C
Default=off
Visible=Yes

CheckName=SEC-BUFFER-memset-overrun-pos
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to memset might overrun the buffer."
LongDesc="A call to memset might cause a buffer overrun. If memset is called with a size exceeding the size of the allocated buffer, it will overrun. This might cause a runtime error.  Make sure that the size of the buffer passed to memset does not exceed the destination buffer's size. You might need to add a condition before the call to memset."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-BUFFER-memset-overrun
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to memset overruns the buffer."
LongDesc="A buffer overrun is caused by a call to memset. If memset is called with a size exceeding the size of the allocated buffer, it will overrun. This might cause a runtime error.  Make sure that the size of the buffer passed to memset does not exceed the destination buffer's size. You might need to add a condition before the call to memset."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-qsort-overrun-pos
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="Arguments passed to qsort might cause it to overrun."
LongDesc="A call to qsort might cause a buffer overrun. An overrun might be caused by passing a buffer length that exceeds that of the buffer passed to either function, as their first argument.  Make sure that a correct buffer length and size is passed to qsort. The call to qsort might need to be preceded with a comparison of the buffer length and element size."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-BUFFER-qsort-overrun
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="Arguments passed to qsort cause it to overrun."
LongDesc="A buffer overrun is caused by a call to qsort. An overrun is caused by passing a buffer length that exceeds that of the buffer passed to either function, as their first argument.  Make sure that a correct buffer length and size is passed to qsort. The call to qsort might need to be preceded with a comparison of the buffer length and element size."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-sprintf-overrun
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to the sprintf function will overrun the target buffer."
LongDesc="A call to the sprintf function will overrun the target buffer.  Consider using a function that allows you to set the buffer length, such as snprintf. Alternatively, you might be able to compare the lenghts of the source and destination buffer before calling sprintf."
Severity=High
IdenticalTo=LIB-sprintf-overrun
Default=on
Visible=Yes

CheckName=SEC-BUFFER-std-sort-overrun-pos
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="Use of std::sort might cause a buffer overrun."
LongDesc="std::sort can take a pointer to an array and a pointer to the end of the array as arguments. However, if the pointers do not point into the same array, or if the end pointer is so far away that some elements outside the array are included, a buffer overrun might occur.  Ensure that both pointers passed to std::sort point within the same buffer."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-BUFFER-std-sort-overrun
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A buffer overrun is caused by use of std::sort."
LongDesc="std::sort can take a pointer to an array and a pointer to the end of the array as arguments. However, if the pointers do not point into the same array, or if the end pointer is so far away that some elements outside the array are included, a buffer overrun might occur.  Ensure that both pointers passed to std::sort point within the same buffer."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-strcat-overrun-pos
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to the strcat function might overrun the target buffer."
LongDesc="A call to the strcat function might overrun the target buffer. strcat appends to the target the contents of the source string up until a null character. If the length of the source buffer is longer than the amount allocated in the destination buffer, a buffer overflow occurs. Alternatively, if the source string is not null terminated, strcat could read past the intended bytes and overflow the destination buffer.  If possible, use strncat instead of strcat to set an upper bound on the number of bytes to append. You should also try to check the length of source and destination buffer before calling strcat."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-BUFFER-strcat-overrun
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to the strcat function will overrun the target buffer."
LongDesc="A call to the strcat function will overrun the target buffer. strcat appends to the target the contents of the source string up until a null character. If the length of the source buffer is longer than the amount allocated in the destination buffer, a buffer overflow occurs. Alternatively, if the source string is not null terminated, strcat could read past the intended bytes and overflow the destination buffer.  If possible, use strncat instead of strcat to set an upper bound on the number of bytes to append. You should also try to check the length of source and destination buffer before calling strcat."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-strcpy-overrun-pos
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to the strcpy function might overrun the target buffer."
LongDesc="A call to the strcpy function might overrun the target buffer. strcpy will copy the contents of the source string, up until the null character. If the length of the source string exceeds the intended destination, a buffer overflow occurs which might overwrite memory you did not intend to. Alternatively, if the null character is not present, strcpy might continue past the intended end of the string and read unintended memory into the buffer.  If possible, use strncpy to set an upper limit on the number of bytes copied into the destination buffer. The number of bytes should be the length of the destination buffer. Alternatively, you might be able to check the length of both the source and destination buffers before calling strcpy."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-BUFFER-strcpy-overrun
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to the strcpy function will overrun the target buffer."
LongDesc="A call to the strcpy function will overrun the target buffer. strcpy will copy the contents of the source string, up until the null character. If the length of the source string exceeds the intended destination, a buffer overflow occurs which might overwrite memory you did not intend to. Alternatively, if the null character is not present, strcpy might continue past the intended end of the string and read unintended memory into the buffer.  If possible, use strncpy to set an upper limit on the number of bytes copied into the destination buffer. The number of bytes should be the length of the destination buffer. Alternatively, you might be able to check the length of both the source and destination buffers before calling strcpy."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-strncat-overrun-pos
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A buffer overrun might be caused by a call to strncat."
LongDesc="Calling strncat with a destination buffer that is too small causes a buffer overrun.  strncat takes a destination buffer as its first argument. If the remaining space of this buffer is  smaller than the number of characters to be appended, as determined by the position of the null terminator in the  source buffer or the size passed as the third argument to strncat, then an overflow might occur resulting in undefined  behavior and potential runtime errors.  Make sure that the length passed to strncat is correct. You might need to perform an comparison before calling strncat."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-BUFFER-strncat-overrun
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to strncat causes a buffer overrun."
LongDesc="Calling strncat with a destination buffer that is too small will cause a buffer overrun.  strncat takes a destination buffer as its first argument. If the remaining space of this buffer is  smaller than the number of characters to be appended, as determined by the position of the null terminator in the  source buffer or the size passed as the third argument to strncat, then an overflow might occur resulting in undefined  behavior and potential runtime errors.  Make sure that the length passed to strncat is correct. You might need to perform an comparison before calling strncat."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-strncmp-overrun-pos
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to strncmp might cause a buffer overrun."
LongDesc="Passing an incorrect string length to strncmp might cause a buffer overrun. Strncmp limits the number of characters it compares to the number of characters passed as its third argument, to prevent buffer overruns with non-null terminated strings. However, if the number of characters passed exceeds the length of the two strings, and none of these strings is null terminated, then it will overrun.  Make sure the length passed to strncmp is correct. You might need to perform an comparison before calling strncmp."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-BUFFER-strncmp-overrun
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A buffer overrun is caused by a call to strncmp."
LongDesc="A buffer overrun is caused by passing an incorrect string length to strncmp. Strncmp limits the number of characters it compares to the number of characters passed as its third argument, to prevent buffer overruns with non-null terminated strings. However, if the number of characters passed exceeds the length of the two strings, and none of these strings is null terminated, then it will overrun.  Make sure the length passed to strncmp is correct. You might need to perform an comparison before calling strncmp."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-strncpy-overrun-pos
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="The target buffer might be overrun by a call to the strncpy function."
LongDesc="The target buffer might be overrun by a call to the strncpy function. If the supplied buffer length exceeds the actual length of the destination buffer, strncpy might write past the bounds of the destination buffer.  Make sure the length passed to strncpy is correct. You might need to perform a comparison before calling strncpy."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-BUFFER-strncpy-overrun
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A call to the strncpy function will overrun the target buffer."
LongDesc="A call to the strncpy function will overrun the target buffer. If the supplied buffer length exceeds the actual length of the destination buffer, strncpy might write past the bounds of the destination buffer.  Make sure the length passed to strncpy is correct. You might need to perform a comparison before calling strncpy."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-tainted-alloc-size
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A user is able to control the amount of memory used in an allocation."
LongDesc="The size of an allocation is derived from user input. User input should be bounds-checked before it is used as an argument to a memory allocation function.  If the size being passed to an allocation function is not checked properly, an attacker might cause an application crash via an out-of-memory condition, or cause the application to consume large amounts of memory on a system.  Any size derived from user input that is passed to an allocation function should be checked to make sure it is not too large."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-tainted-copy-length
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A tainted value is used as the size of the memory copied from one buffer to another."
LongDesc="A value derived from user input is used as the size of the memory when contents is copied from one buffer to another. An attacker could supply a value that causes a buffer overrun, which might expose sensitive data stored in memory or cause an application crash.  Buffer sizes taken from user input should be properly bounds-tested before they are used."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-tainted-copy
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="User input is copied into a buffer."
LongDesc="An unbounded copying function is used to copy the contents of a buffer that contains user input, into another buffer. If the length of the user input is not checked before it is copied, an attacker could input data longer than the intended destination. This data could overwrite other values stored in memory, causing unexpected (and potentially dangerous) behavior and could lead to arbitrary code execution.  The length of user input should be checked before it is used in an unbounded copy function, or such functions should be avoided altogether."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-tainted-index
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="An array is accessed with an index derived from user input."
LongDesc="An array is accessed with an index that is unchecked and derived from user input. An attacker could create input that might cause a buffer overrun.  Such an attack might cause an application crash, corruption of data, or exposure of sensitive information in memory.  All input from users should be bounds-checked before it is used to access an array."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-tainted-offset
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A user-controlled variable is used as an offset to a pointer without proper bounds checking."
LongDesc="In an arithmetic operation involving a pointer, a variable is used that is under user control. Without checking the bounds of this variable, an attacker could send a value to the application that might cause a buffer overrun, corruption of data, or exposure of sensitive information stored in memory.  The bounds of all tainted variables must be properly checked before used in pointer arithmetic."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-BUFFER-use-after-free-all
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A pointer is used after it has been freed, on all execution paths."
LongDesc="Memory is being accessed after it has been deallocated. The application might seem to work, but the operation is illegal.  This will probably cause an application crash, or the program might continue operating with erroneous or corrupt data.  A pointer should be assigned to a different and valid memory location (either by aliasing another pointer, or by performing another allocation) before being used."
Severity=High
IdenticalTo=MISRAC2012-Dir-4.13_d MISRAC2012-Rule-1.3_o CERT-MEM30-C_a MEM-use-free-all
Default=on
Visible=Yes

CheckName=SEC-BUFFER-use-after-free-some
Package=SECURITY
Group=SEC-BUFFER
CheckSynopsis="A pointer is used after it has been freed, on some execution paths."
LongDesc="A pointer is used after it has been freed, on some execution paths.  This might cause data corruption or an application crash.  A pointer should be assigned to a different and valid memory location (either by aliasing another pointer, or by performing another allocation) before being used."
Severity=High
IdenticalTo=MEM-use-free-some MISRAC2012-Dir-4.13_e MISRAC2012-Rule-1.3_p CERT-MEM30-C_b
Default=on
Visible=Yes

CheckName=SEC-DIV-0-compare-after
Package=SECURITY
Group=SEC-DIV-0
CheckSynopsis="After a successful comparison with 0, a variable is used as a divisor."
LongDesc="A variable is compared to 0, then used as a divisor before being written to.  The comparison implies that the variable's value is 0 for all following statements. Using it as a divisor afterwards causes a 'divide by zero' runtime error."
Severity=Medium
IdenticalTo=ATH-div-0-cmp-aft MISRAC2004-1.2_e MISRAC2012-Rule-1.3_c CERT-INT33-C_b
Default=on
Visible=Yes

CheckName=SEC-DIV-0-compare-before
Package=SECURITY
Group=SEC-DIV-0
CheckSynopsis="A variable is first used as a divisor, then compared with 0."
LongDesc="A variable is compared to 0 after it is used as a divisor, but before it is written to again. The comparison implies that the variable's value might be 0, and might have been for the preceding statements. Because one of these statements is an operation that uses the variable as a divisor (which would cause a 'divide by zero' runtime error), the execution can never reach the comparison when the value is 0, making it meaningless."
Severity=Low
IdenticalTo=ATH-div-0-cmp-bef MISRAC2004-1.2_f MISRAC2012-Rule-1.3_d CERT-INT33-C_c
Default=on
Visible=Yes

CheckName=SEC-DIV-0-tainted
Package=SECURITY
Group=SEC-DIV-0
CheckSynopsis="User input is used as a divisor without validation."
LongDesc="User input is used as a divisor without first checking that it is within a range. This means that an attacker can send a value that might trigger a division by zero error, for example as part of a denial of service attack."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-EXECUTION-dynamic-library
Package=SECURITY
Group=SEC-EXECUTION
CheckSynopsis="User input is used to specify a dynamic library"
LongDesc="User input is used to derive the path to a dynamic library. An attacker could supply an input that loads a library different to the one the programmer intended to load. This custom library could be used to execute arbitary code.  The path to the dynamic library should be sanitized, through a string comparison or similar, before being used"
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-EXECUTION-dynamic-load-abs-path
Package=SECURITY
Group=SEC-EXECUTION
CheckSynopsis="A DLL or process is loaded using a relative path."
LongDesc="A relative path is used to load a library or create a process. When a relative path is used, Windows will attempt to locate the DLL or process in a particular order. An attacker could place a malicous library or process in one of these locations, and may be able to execute aribitary code from your program. This threat is potentially hightened if your application is run as an administrator.  Developers should pass absoulte paths to these functions when they are known. The function 'GetFullPathName' is able to create a non-relative path from a relative path and should be used before loading a library or process."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-EXECUTION-path-var-putenv
Package=SECURITY
Group=SEC-EXECUTION
CheckSynopsis="Use input is used to set the PATH environment variable."
LongDesc="User input is used in whole or part to set the PATH enviornment varaible. The PATH environment variable is the search path the program uses to find executables to launch. If an attacker is able to control the value of the PATH variable, they may be able to force the program to look in uninteded locations. Such unintended locations could contain copies of the executable the program is trying to launch and lead to the program mistakingly launching that copy instead of the intended executable.  User input should be checked to be valid, through string comparison or similar before being used."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-EXECUTION-path-var-setenv
Package=SECURITY
Group=SEC-EXECUTION
CheckSynopsis="Use input is used to set the PATH environment variable."
LongDesc="User input is used in whole or part to set the PATH enviornment varaible. The PATH environment variable is the search path the program uses to find executables to launch. If an attacker is able to control the value of the PATH variable, they may be able to force the program to look in uninteded locations. Such unintended locations could contain copies of the executable the program is trying to launch and lead to the program mistakingly launching that copy instead of the intended executable.  User input should be checked to be valid, through string comparison or similar before being used."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-FILEOP-chroot-breakout
Package=SECURITY
Group=SEC-FILEOP
CheckSynopsis="User input used in file operation between chroot and chdir."
LongDesc="After calling chroot, you must call chdir before performing any file operations involving user input. Without changing the process's working directory, relative paths passed to file operations may still refer to resources outside the chroot jail. Before performing any file operation involving user input, you must call chdir."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-FILEOP-insecure-temp-file
Package=SECURITY
Group=SEC-FILEOP
CheckSynopsis="Use of a function known to create insecure temporary files."
LongDesc="The program calls a function that is known to create an easily guessed temporary file. An attacker may be able to inject their own file with containting malicous data. Such a file could lead the program to perform malicious operations, enable the attacker to perform a denial of service attack or expose sensitive information the program stores on the file system or in a database.  Use functions that return a file handle or file pointer to a temporary file, instead of the path or name of the file."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-FILEOP-open-no-close
Package=SECURITY
Group=SEC-FILEOP
CheckSynopsis="All file pointers obtained dynamically by means of Standard Library functions must be explicitly released."
LongDesc="If file pointers are not explicitly released, a failure might occur caused by exhaustion of the resources. Release file pointers as soon as possible to reduce the risk of exhaustion.  Make sure that files are closed on all execution paths in a function."
Severity=High
IdenticalTo=MISRAC2012-Dir-4.13_c MISRAC2012-Rule-22.1_b RESOURCE-file-no-close-all CERT-FIO42-C_a
Default=on
Visible=Yes

CheckName=SEC-FILEOP-path-traversal
Package=SECURITY
Group=SEC-FILEOP
CheckSynopsis="User input is used as a file path, or used to derive a file path."
LongDesc="User input is used either directly or in part to derive a file path. Unless this information is checked, an attacker could send a value that causes a file open to traverse out of the intended directory. As a result, files you wish to keep secure could be opened, modified, or deleted. An attacker could also create files in undesired locations.  Values that come from user input should be checked, by string comparison or similar, before being used as a path to a file."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-FILEOP-use-after-close
Package=SECURITY
Group=SEC-FILEOP
CheckSynopsis="A file resource is used after it has been closed."
LongDesc="A file resource is referred to after it has been closed. Once a file has been closed, the reference to that file is invalidated. Any use of this reference is undefined and might result in an application crash.  A file pointer should not be used after the file it points to is closed. To use the file pointer again, you must open a new file with that pointer."
Severity=High
IdenticalTo=RESOURCE-file-use-after-close SEC-FILEOP-use-after-close MISRAC2012-Dir-4.13_f CERT-FIO46-C_b
Default=on
Visible=Yes

CheckName=SEC-INJECTION-environment
Package=SECURITY
Group=SEC-INJECTION
CheckSynopsis="User input is used as a value in the environment."
LongDesc="User input is used as a value of a variable in the process's environment. With some knowledge of how the program operates, an attacker could craft an input to cause unexpected behaviour. They may be able to change the expected flow of the program and, depending on the variable, be able to achieve aribitary code execution. Input to functions that set the environment should be checked before they are used, through string comparison or similar."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-INJECTION-ldap
Package=SECURITY
Group=SEC-INJECTION
CheckSynopsis="User input is improperly used in an LDAP query."
LongDesc="An LDAP query is constructed either completely or partially from user input. When user input should be properly neutralized before use in an LDAP query. By using user input directly in an LDAP query, that query is left open to attack.  An attacker could provide input to execute arbitary commands, which could grant permissing to unauthorized queries or modify content inside the LDAP tree.  This check supports the following C/C++ libraries for LDAP:  * Microsoft LDAP  * OpenLDAP  * Mozilla LDAP SDK  Strings derived from user input should be checked, using a string comparison or similar, before being passed as an LDAP query."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-INJECTION-os
Package=SECURITY
Group=SEC-INJECTION
CheckSynopsis="User input is used as part of a system command."
LongDesc="User input is used to compose a system command which is then executed. Without properly sanitizing the user input, an attacker may execute commands with the privilege of the vulnerable process.  User input should be checked, through string comparison or similar, before being used in a system call."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=SEC-INJECTION-sql
Package=SECURITY
Group=SEC-INJECTION
CheckSynopsis="User input is improperly used in an SQL statement."
LongDesc="An SQL statement is constructed either completely or partially from user input. When user input is used in an SQL statement, that statement should be parameterized and the user input be passed as a parameter. By using user input directly in an SQL statement (through string concatenation or similar) you leave the statement open to attack.  An attacker could provide input to execute arbitrary commands on your database. These commands could expose information in the database, overwrite existing data, or delete elements from the database.  This check supports the following C/C++ libraries for SQL:  * MySQL C API  * MySQL Connector/C++  * libpq (PostgreSQL)  * libpq++ (PostgreSQL)  * libpqxx (PostgreSQL)  * sqlite3   * Microsoft ODBC  * OLE DB  User input should be sanitized using an SQL escaping function."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-INJECTION-xpath
Package=SECURITY
Group=SEC-INJECTION
CheckSynopsis="User input is improperly used as an XPath expression."
LongDesc="An XPath expression is constructed either entirely or partially from user input. User input used in XPath expressions must be sanitized before used.  An attacker could provide input to expose the structure of the XML document, or acccess fields they normally do not have access to. Unlike databases there is no level access control, so an attacker can access the entire document.  This check supports the following C/C++ libraries for XPath:  * libxml2  * Xerces  * MSXML  * libxml++  * TinyXPath  * libroxml  * pugixml  User input should be checked through string comparison or similar before being used in an XPath query."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-LOOP-tainted-bound
Package=SECURITY
Group=SEC-LOOP
CheckSynopsis="A user-controlled value is used as part of a loop condidition."
LongDesc="A user-controlled value is used as part of a loop condidition. Unless the bounds of the value used in the condition is checked properly, an attacker might control the number of times a loop executes. This might cause integer overflows or possibly be used in denial of service attacks.   User input used in a loop condition must have its upper and lower bounds checked before used."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-NULL-assignment-fun-pos
Package=SECURITY
Group=SEC-NULL
CheckSynopsis="A pointer that might have been assigned the value NULL is dereferenced."
LongDesc="A pointer that might have been assigned the value NULL, either directly or by a function call that can return NULL, is dereferenced, either directly or by being passed to a function which might dereference it without checking its value.  This might cause an application crash.  A pointer that might be NULL should be checked before it is dereferenced."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-NULL-assignment
Package=SECURITY
Group=SEC-NULL
CheckSynopsis="A pointer is assigned the value NULL, then dereferenced."
LongDesc="A pointer is assigned the value NULL, then dereferenced.  The assignment might be intentional to indicate that the pointer is no longer used, but it is an error to subsequently  dereference it, and it might cause an application crash.  The pointer should be checked for NULL before it is dereferenced. If the dereference is unintentional, you might want to either assign a value to the pointer or remove the dereference."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-NULL-cmp-aft
Package=SECURITY
Group=SEC-NULL
CheckSynopsis="A pointer is dereferenced, then compared with NULL."
LongDesc="Checks whether a dereferenced pointer are subsequently compared with NULL.  Dereferencing a pointer implicitly asserts that it is not  NULL. Comparing it with NULL after this may suggests that it may have been NULL at the point of dereference.  The pointer should be checked to be non-NULL before being derefenced."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-NULL-cmp-bef-fun
Package=SECURITY
Group=SEC-NULL
CheckSynopsis="A pointer is compared with NULL, then dereferenced by a function."
LongDesc="A pointer is compared with NULL, then passed as an argument to a function that might dereference it.  This might be caused by an accidental use of the wrong comparison operator, for example == instead of !=, or by accidentally swapping the then- and else-  clauses of an if-statement.  If the function does dereference the pointer, the application will crash. If it does not, the argument is not needed.  Check comparison operators to make sure they test the correct condition, and make sure that branches have not been accidentally swapped."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-NULL-cmp-bef
Package=SECURITY
Group=SEC-NULL
CheckSynopsis="A pointer is compared with NULL, then dereferenced."
LongDesc="A pointer is compared with NULL, then dereferenced.  This might be caused by an accidental use of the wrong comparison operator, for example == instead of !=, or by accidentally swapping the then- and else-  clauses of an if-statement.  If the condition is evaluated and found to be true, the application will crash.  Check comparison operators to make sure they test the correct condition, and make sure that branches have not been accidentally swapped."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=SEC-NULL-literal-pos
Package=SECURITY
Group=SEC-NULL
CheckSynopsis="A literal pointer expression (e.g. NULL) is dereferenced by a function call."
LongDesc="A literal pointer expression (for example, NULL) is passed as an argument to a function that might dereference it.  Pointer values are generally only useful if acquired at runtime; thus dereferencing a literal address will usually be an accident, resulting in corrupted memory or an application crash.  Make sure that the function being called checks the argument it is given with NULL, before it dereferences it."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=SEC-STRING-format-string
Package=SECURITY
Group=SEC-STRING
CheckSynopsis="User input is used as a format string."
LongDesc="User input is used as a format string. An attacker might supply an input string that contains format tokens.  Such a string can be used to read and write to arbitrary memory locations, making the attacker able to execute code, crash the application, or access sensitive information stored in memory. User input should be tested, using string comparison or similar, before being used as a format string."
Severity=High
IdenticalTo=CERT-FIO30-C
Default=on
Visible=Yes

CheckName=SEC-STRING-hard-coded-credentials
Package=SECURITY
Group=SEC-STRING
CheckSynopsis="The application hard codes a username or password to connect to an external component."
LongDesc="The application uses a hard-coded username or password to connect to an external resource, such as a database. An attacker might extract the password from the application binary through an exploit. Or, if the application is indended for client-side use, an attacker could extract the credentials from the binary itself.   Credentials should be read into the application using a strongly-protected encrypted configuration file or database.  This check supports the following C/C++ SQL libraries:  * MySQL C API  * MySQL Connector/C++  * libpq (PostgreSQL)  * libpq++ (PostgreSQL)  * libpqxx (PostgreSQL)  * Microsoft ODBC  * OLE DB  and, also supports Windows Login functions"
Severity=Medium
IdenticalTo=CERT-MSC41-C_a
Default=off
Visible=Yes

CheckName=MISRAC2004-1.1
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) All code shall conform to ISO 9899 standard, with no extensions permitted."
LongDesc="Code was found that does not conform to the ISO/IEC 9899:1990 standard."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_a
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior.  This is a semi-equivalent initialization check for arrays, which ensures that at least one element of the array has been written before any element is attempted to be read.  A warning generally means that you have read an uninitialized value, which might cause the application to behave erroneously or crash."
LongDesc="There are read accesses from local buffers that are not preceded by write accesses."
Severity=High
IdenticalTo=MISRAC2012-Rule-9.1_b SPC-uninit-arr-all CERT-EXP33-C_d
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_b
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior.  Using uninitialized values might cause unexpected results or unpredictable behavior, particularly in the case of pointer fields."
LongDesc="On all execution paths, one or more fields are read from a struct before they are initialized."
Severity=High
IdenticalTo=MISRAC2012-Rule-9.1_d CERT-EXP33-C_e
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_c
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior."
LongDesc="An expression resulting in 0 is used as a divisor."
Severity=High
IdenticalTo=ATH-div-0 MISRAC2012-Rule-1.3_a
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_d
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior."
LongDesc="A variable was found that is assigned the value 0, and then used as a divisor."
Severity=High
IdenticalTo=ATH-div-0-assign MISRAC2012-Rule-1.3_b CERT-INT33-C_a
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_e
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior."
LongDesc="A variable is used as a divisor after a successful comparison with 0."
Severity=Medium
IdenticalTo=ATH-div-0-cmp-aft MISRAC2012-Rule-1.3_c SEC-DIV-0-compare-after CERT-INT33-C_b
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_f
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior."
LongDesc="A variable used as a divisor is subsequently compared with 0."
Severity=Low
IdenticalTo=ATH-div-0-cmp-bef MISRAC2012-Rule-1.3_d SEC-DIV-0-compare-before CERT-INT33-C_c
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_g
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior."
LongDesc="A value that is determined using interval analysis to be 0 is used as a divisor."
Severity=Medium
IdenticalTo=ATH-div-0-interval MISRAC2012-Rule-1.3_e CERT-INT33-C_d
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_h
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior."
LongDesc="An expression that might be 0 is used as a divisor."
Severity=High
IdenticalTo=ATH-div-0-pos MISRAC2012-Rule-1.3_f CERT-INT33-C_e
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_i
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior."
LongDesc="A global variable is not checked against 0 before it is used as a divisor."
Severity=Medium
IdenticalTo=ATH-div-0-unchk-global MISRAC2012-Rule-1.3_g CERT-INT33-C_f
Default=on
Visible=Yes

CheckName=MISRAC2004-1.2_j
Package=MISRAC2004
Group=MISRAC2004-1
CheckSynopsis="(Required) No reliance shall be placed on undefined or unspecified behavior."
LongDesc="A local variable is not checked against 0 before it is used as a divisor."
Severity=Medium
IdenticalTo=ATH-div-0-unchk-local MISRAC2012-Rule-1.3_h CERT-INT33-C_g
Default=on
Visible=Yes

CheckName=MISRAC2004-2.1
Package=MISRAC2004
Group=MISRAC2004-2
CheckSynopsis="(Required) Assembler language shall be encapsulated and isolated."
LongDesc="Inline assembler statements were found that are not encapsulated in functions."
Severity=Low
IdenticalTo=MISRAC++2008-7-4-3 MISRAC2012-Dir-4.3
Default=on
Visible=Yes

CheckName=MISRAC2004-2.2
Package=MISRAC2004
Group=MISRAC2004-2
CheckSynopsis="(Required) Source code shall only use /* ... */ style comments."
LongDesc="Uses of // comments were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-2.3
Package=MISRAC2004
Group=MISRAC2004-2
CheckSynopsis="(Required) The character sequence /* shall not be used within a comment."
LongDesc="The character sequence /* was found inside comments."
Severity=Low
IdenticalTo=COMMENT-nested MISRAC++2008-2-7-1 MISRAC++2023-5.7.1
Default=on
Visible=Yes

CheckName=MISRAC2004-2.4
Package=MISRAC2004
Group=MISRAC2004-2
CheckSynopsis="(Advisory) Sections of code should not be commented out."
LongDesc="Code sections in comments were found, where the comment ends in ;, {, or } characters."
Severity=Low
IdenticalTo=MISRAC2012-Dir-4.4
Default=off
Visible=Yes

CheckName=MISRAC2004-4.1
Package=MISRAC2004
Group=MISRAC2004-4
CheckSynopsis="(Required) Only those escape sequences that are defined in the ISO C standard shall be used."
LongDesc="Bad escape sequence found."
Severity=Medium
IdenticalTo=MISRAC++2023-5.13.1 MISRAC++2008-2-13-1
Default=on
Visible=Yes

CheckName=MISRAC2004-4.2
Package=MISRAC2004
Group=MISRAC2004-4
CheckSynopsis="(Required) Tri-graphs shall not be used"
LongDesc="Trigraphs were found in string literals."
Severity=Low
IdenticalTo=STR-trigraph MISRAC++2008-2-3-1 MISRAC2012-Rule-4.2
Default=on
Visible=No

CheckName=MISRAC2004-5.1
Package=MISRAC2004
Group=MISRAC2004-5
CheckSynopsis="(Required) Identifiers (internal and external) shall not rely on the significance of more than 31 characters."
LongDesc="Identifiers were found that are not distinct in their first 31 characters (#defines, structs, unions, fields, enums, and variables)."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-5.2
Package=MISRAC2004
Group=MISRAC2004-5
CheckSynopsis="(Required) Identifiers in an inner scope shall not use the same name as an identifier in an outer scope, and thus hide that identifier."
LongDesc="An identifier name was found that is not distinct in the first 31 characters from other names in an outer scope."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-5.3
Package=MISRAC2004
Group=MISRAC2004-5
CheckSynopsis="(Required) A typedef name shall be a unique identifier."
LongDesc="A typedef declaration was found with a name already used for a previously declared typedef."
Severity=Low
IdenticalTo=MISRAC++2008-2-10-3 MISRAC2012-Rule-5.6
Default=on
Visible=Yes

CheckName=MISRAC2004-5.4
Package=MISRAC2004
Group=MISRAC2004-5
CheckSynopsis="(Required) A tag name shall be a unique identifier."
LongDesc="A class, struct, union, or enum declaration was found that clashes with a previous declaration."
Severity=Low
IdenticalTo=MISRAC++2008-2-10-4 MISRAC2012-Rule-5.7
Default=on
Visible=Yes

CheckName=MISRAC2004-5.5
Package=MISRAC2004
Group=MISRAC2004-5
CheckSynopsis="(Advisory) No object or function identifier with static storage duration should be reused."
LongDesc="An identifier is used that might clash with another static identifier."
Severity=Low
IdenticalTo=MISRAC++2008-2-10-5
Default=off
Visible=Yes

CheckName=MISRAC2004-5.6
Package=MISRAC2004
Group=MISRAC2004-5
CheckSynopsis="(Advisory) No identifier in one namespace should have the same spelling as an identifier in another namespace, with the exception of structure member and union member names."
LongDesc="Identifier reuse in different namespaces"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2004-5.7
Package=MISRAC2004
Group=MISRAC2004-5
CheckSynopsis="(Advisory) No identifier name should be reused."
LongDesc="An identifier in a variable, enumeration, struct, #define, or union definition is reused."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2004-6.1
Package=MISRAC2004
Group=MISRAC2004-6
CheckSynopsis="(Required) The plain char type shall be used only for the storage and use of character values."
LongDesc="Arithmetic is performed on objects of type plain char, without an explicit signed or unsigned qualifier."
Severity=Low
IdenticalTo=MISRAC++2008-4-5-3
Default=on
Visible=Yes

CheckName=MISRAC2004-6.2
Package=MISRAC2004
Group=MISRAC2004-6
CheckSynopsis="(Required) signed and unsigned char type shall be used only for the storage and use of numeric values."
LongDesc="A signed or unsigned char is used on character data."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-6.3
Package=MISRAC2004
Group=MISRAC2004-6
CheckSynopsis="(Advisory) typedefs that indicate size and signedness should be used in place of the basic types."
LongDesc="One or more of the basic types char, int, short, long, double, and float are used without a typedef."
Severity=Low
IdenticalTo=MISRAC++2008-3-9-2 MISRAC2012-Dir-4.6_a MISRAC++2023-6.9.2
Default=off
Visible=Yes

CheckName=MISRAC2004-6.4
Package=MISRAC2004
Group=MISRAC2004-6
CheckSynopsis="(Required) Bitfields shall only be defined to be of type unsigned int or signed int."
LongDesc="Bitfields of plain int type were found."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-6.1
Default=on
Visible=Yes

CheckName=MISRAC2004-6.5
Package=MISRAC2004
Group=MISRAC2004-6
CheckSynopsis="(Required) Bitfields of signed type shall be at least 2 bits long."
LongDesc="Signed bitfields consisting of a single bit (excluding anonymous fields) were found."
Severity=Low
IdenticalTo=STRUCT-signed-bit MISRAC++2008-9-6-4 MISRAC2012-Rule-6.2 MISRAC++2023-12.2.3
Default=on
Visible=Yes

CheckName=MISRAC2004-7.1
Package=MISRAC2004
Group=MISRAC2004-7
CheckSynopsis="(Required) Octal constants shall not be used. Zero is okay"
LongDesc="Uses of octal integer constants were found."
Severity=Low
IdenticalTo=MISRAC++2008-2-13-2 MISRAC2012-Rule-7.1 MISRAC++2023-5.13.3
Default=on
Visible=Yes

CheckName=MISRAC2004-8.1
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) Functions shall have prototype declarations and the prototype shall be visible at both the function definition and call."
LongDesc="Functions were found that are used despite not having a valid prototype."
Severity=Medium
IdenticalTo=FUNC-implicit-decl MISRAC2012-Rule-17.3 CERT-DCL31-C
Default=on
Visible=Yes

CheckName=MISRAC2004-8.2
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) Whenever an object or function is declared or defined, its type shall be explicitly stated."
LongDesc="An implicit int was found in a declaration."
Severity=Medium
IdenticalTo=DECL-implicit-int MISRAC2012-Rule-8.1
Default=on
Visible=Yes

CheckName=MISRAC2004-8.3
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) For each function parameter the type given in the declaration and definition shall be identical, and the return types shall also be identical."
LongDesc="A declaration and definition for a function were found that use different type qualifiers."
Severity=Low
IdenticalTo=CERT-EXP37-C_b
Default=on
Visible=Yes

CheckName=MISRAC2004-8.5_a
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) There shall be no definitions of objects or functions in a header file."
LongDesc="A global variable is declared in a header file."
Severity=Medium
IdenticalTo=MISRAC++2008-3-1-1_a MISRAC++2023-6.2.4_a
Default=on
Visible=Yes

CheckName=MISRAC2004-8.5_b
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) There shall be no definitions of objects or functions in a header file."
LongDesc="One or more non-inlined functions are defined in header files."
Severity=Medium
IdenticalTo=MISRAC++2008-3-1-1_b MISRAC++2023-6.2.4_b
Default=on
Visible=Yes

CheckName=MISRAC2004-8.6
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) Functions shall be declared at file scope."
LongDesc="A function declaration was found at block scope."
Severity=Low
IdenticalTo=MISRAC++2008-3-1-2 MISRAC++2023-6.0.1_a
Default=on
Visible=Yes

CheckName=MISRAC2004-8.7
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) Objects shall be defined at block scope if they are only accessed from within a single function."
LongDesc="A global object was found that is only referenced from a single function."
Severity=Low
IdenticalTo=MISRAC2012-Rule-8.9_b
Default=on
Visible=Yes

CheckName=MISRAC2004-8.8_a
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) An external object or function shall be declared once in one and only one file."
LongDesc="Multiple declarations of the same external object or function were found."
Severity=Low
IdenticalTo=MISRAC2012-Rule-8.5_a MISRAC++2008-3-2-3_a
Default=on
Visible=Yes

CheckName=MISRAC2004-8.8_b
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) An external object or function shall be declared once in one and only one file."
LongDesc="Multiple declarations of the same external object or function were found."
Severity=Low
IdenticalTo=MISRAC2012-Rule-8.5_b MISRAC++2008-3-2-3_b
Default=on
Visible=Yes

CheckName=MISRAC2004-8.9
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) An identifier with external linkage shall have exactly one external definition."
LongDesc="Multiple definitions or no definition were found for an external object or function."
Severity=Low
IdenticalTo=MISRAC2012-Rule-8.6 MISRAC++2008-3-2-4 MISRAC++2023-6.2.3_a
Default=on
Visible=Yes

CheckName=MISRAC2004-8.10
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) All declarations and definitions of objects or functions at file scope shall have internal linkage unless external linkage is required."
LongDesc="An externally linked object or function was found referenced in only one translation unit."
Severity=Low
IdenticalTo=MISRAC2012-Rule-8.7
Default=on
Visible=Yes

CheckName=MISRAC2004-8.12
Package=MISRAC2004
Group=MISRAC2004-8
CheckSynopsis="(Required) When an array is declared with external linkage, its size shall be stated explicitly or defined implicitly by initialization."
LongDesc="External arrays are declared without their size being stated explicitly or defined implicitly by initialization."
Severity=Low
IdenticalTo=MISRAC++2008-3-1-3 MISRAC2012-Rule-8.11 MISRAC++2023-6.0.2
Default=on
Visible=Yes

CheckName=MISRAC2004-9.1_a
Package=MISRAC2004
Group=MISRAC2004-9
CheckSynopsis="(Required) All automatic variables shall have been assigned a value before being used."
LongDesc="A variable is read before it is assigned a value, on all execution paths."
Severity=High
IdenticalTo=SPC-uninit-var-all MISRAC++2008-8-5-1_a MISRAC2012-Rule-9.1_e
Default=on
Visible=Yes

CheckName=MISRAC2004-9.1_b
Package=MISRAC2004
Group=MISRAC2004-9
CheckSynopsis="(Required) All automatic variables shall have been assigned a value before being used."
LongDesc="On some execution paths, a variable is read before it is assigned a value."
Severity=High
IdenticalTo=SPC-uninit-var-some MISRAC++2008-8-5-1_b MISRAC2012-Rule-9.1_f MISRAC++2023-11.6.2
Default=on
Visible=Yes

CheckName=MISRAC2004-9.1_c
Package=MISRAC2004
Group=MISRAC2004-9
CheckSynopsis="(Required) All automatic variables shall have been assigned a value before being used."
LongDesc="An uninitialized or NULL pointer that is dereferenced was found."
Severity=High
IdenticalTo=PTR-uninit MISRAC++2008-8-5-1_c
Default=on
Visible=Yes

CheckName=MISRAC2004-9.2
Package=MISRAC2004
Group=MISRAC2004-9
CheckSynopsis="(Required) Braces shall be used to indicate and match the structure in the non-zero initialization of arrays and structures."
LongDesc="A non-zero array initialization was found that does not exactly match the structure of the array declaration."
Severity=Medium
IdenticalTo=MISRAC++2008-8-5-2
Default=on
Visible=Yes

CheckName=MISRAC2004-9.3
Package=MISRAC2004
Group=MISRAC2004-9
CheckSynopsis="(Required) In an enumerator list, the '=' construct shall not be used to explicitily initialise members other than the first, unless all items are explicitily initialized."
LongDesc="Partially initialized enum."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.1_a
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of an expression of integer type shall not be implicitly converted to a different underlying type if: (a) it is not a conversion to a wider integer type of the same signedness."
LongDesc="An expression of integer type was found that is implicitly converted to a narrower or differently signed underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.1_b
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of an expression of integer type shall not be implicitly converted to a different underlying type if: (b) the expression is complex."
LongDesc="A complex expression of integer type was found that is implicitly converted to a different underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.1_c
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of an expression of integer type shall not be implicitly converted to a different underlying type if: (c) the expression is not constant and is a function argument."
LongDesc="A non-constant expression of integer type was found that is implicitly converted to a different underlying type in a function argument."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.1_d
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of an expression of integer type shall not be implicitly converted to a different underlying type if: (d) the expression is not constant and is a return expression."
LongDesc="A non-constant expression of integer type was found that is implicitly converted to a different underlying type in a return expression."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.2_a
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of an expression of floating type shall not be implicitly converted to a different underlying type if: (a) it is not a conversion to a wider floating type."
LongDesc="An expression of floating type was found that is implicitly converted to a narrower underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.2_b
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of an expression of floating type shall not be implicitly converted to a different underlying type if: (b) the expression is complex."
LongDesc="An expression of floating type was found that is implicitly converted to a narrower underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.2_c
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of an expression of floating type shall not be implicitly converted to a different underlying type if: (c) the expression is not constant and is a function argument."
LongDesc="A non-constant expression of floating type was found that is implicitly converted to a different underlying type in a function argument."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.2_d
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of an expression of floating type shall not be implicitly converted to a different underlying type if: (d) the expression is not constant and is a return expression."
LongDesc="A non-constant expression of floating type was found that is implicitly converted to a different underlying type in a return expression."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.3
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of a complex expression of integer type shall only be cast to a type that is not wider and of the same signedness as the underlying type of the expression."
LongDesc="A complex expression of integer type was found that is cast to a wider or differently signed underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.4
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) The value of a complex expression of floating type shall only be cast to a floating type which is narrower or of the same size."
LongDesc="A complex expression of floating type was found that is cast to a wider or different underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-10.5
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) If the bitwise operators ~ and << are applied to an operand of underlying type unsigned char or unsigned short, the result shall be immediately cast to the underlying type of the operand."
LongDesc="Detected a bitwise operation on unsigned char or unsigned short, that are not immediately cast to this type to ensure consistent truncation."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-10
Default=on
Visible=Yes

CheckName=MISRAC2004-10.6
Package=MISRAC2004
Group=MISRAC2004-10
CheckSynopsis="(Required) A U suffix shall be applied to all constants of unsigned type."
LongDesc="Constants of unsigned type were found that do not have a U suffix."
Severity=Low
IdenticalTo=MISRAC++2008-2-13-3 MISRAC2012-Rule-7.2 MISRAC++2023-5.13.4
Default=on
Visible=Yes

CheckName=MISRAC2004-11.1
Package=MISRAC2004
Group=MISRAC2004-11
CheckSynopsis="(Required) Conversions shall not be performed between a pointer to a function and any type other than an integral type."
LongDesc="Conversions were found between a pointer to a function and a type other than an integral type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-11.3
Package=MISRAC2004
Group=MISRAC2004-11
CheckSynopsis="(Advisory) A cast should not be performed between a pointer type and an integral type."
LongDesc="A cast between a pointer type and an integral type was found."
Severity=Low
IdenticalTo=MISRAC++2008-5-2-9 MISRAC2012-Rule-11.4 MISRAC++2023-8.2.7
Default=off
Visible=Yes

CheckName=MISRAC2004-11.4
Package=MISRAC2004
Group=MISRAC2004-11
CheckSynopsis="(Advisory) A cast should not be performed between a pointer to object type and a different pointer to object type."
LongDesc="A pointer to object type was found that is cast to a pointer to different object type."
Severity=Low
IdenticalTo=MISRAC++2008-5-2-7
Default=off
Visible=Yes

CheckName=MISRAC2004-11.5
Package=MISRAC2004
Group=MISRAC2004-11
CheckSynopsis="(Required) A cast shall not be performed that removes any const or volatile qualification from the type addressed by a pointer."
LongDesc="Casts were found that that remove any const or volatile qualification."
Severity=Low
IdenticalTo=MISRAC++2008-5-2-5 MISRAC++2023-8.2.3 MISRAC2012-Rule-11.8
Default=on
Visible=Yes

CheckName=MISRAC2004-12.1
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Advisory) Limited dependence should be placed on the C operator precedence rules in expressions."
LongDesc="Expressions were found without parentheses, making the operator precedence implicit instead of explicit."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-2 MISRAC++2023-8.0.1 MISRAC2012-Rule-12.1
Default=off
Visible=Yes

CheckName=MISRAC2004-12.2_a
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The value of an expression shall be the same under any order of evaluation that the standard permits."
LongDesc="Expressions were found that depend on the order of evaluation."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-1_a MISRAC2012-Rule-1.3_i MISRAC2012-Rule-13.2_a SPC-order CERT-EXP30-C_a
Default=on
Visible=Yes

CheckName=MISRAC2004-12.2_b
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The value of an expression shall be the same under any order of evaluation that the standard permits."
LongDesc="More than one read access with volatile-qualified type was found within one sequence point."
Severity=Medium
IdenticalTo=SPC-volatile-reads MISRAC++2008-5-0-1_b MISRAC2012-Rule-13.2_b
Default=on
Visible=Yes

CheckName=MISRAC2004-12.2_c
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The value of an expression shall be the same under any order of evaluation that the standard permits."
LongDesc="More than one modification access with volatile-qualified type was found within one sequence point."
Severity=Medium
IdenticalTo=SPC-volatile-writes MISRAC++2008-5-0-1_c MISRAC2012-Rule-13.2_c
Default=on
Visible=Yes

CheckName=MISRAC2004-12.3
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The sizeof operator shall not be used on expressions that contain side effects. The sizeof operator was found used on expressions that contain side effects. This might make it look as if the expression will be evaluated, but because sizeof only operates on the type of the expression, the expression itself is not evaluated."
LongDesc="Sizeof expressions were found that contain side effects."
Severity=Medium
IdenticalTo=SIZEOF-side-effect MISRAC++2008-5-3-4
Default=on
Visible=Yes

CheckName=MISRAC2004-12.4
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The right-hand operand of a logical && or || operator shall not contain side effects."
LongDesc="Right-hand operands of && or || were found that contain side effects."
Severity=Medium
IdenticalTo=MISRAC++2008-5-14-1 MISRAC2012-Rule-13.5 MISRAC++2023-8.14.1
Default=on
Visible=Yes

CheckName=MISRAC2004-12.5
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The operands of a logical && or || shall be primary-expressions."
LongDesc="The operands of a logical && or || is not an identifier, a constant, a parenthesized expression or a sequence of the same logical operator."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-12.6_a
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Advisory) The operands of logical operators (&&, ||, and !) should be effectively boolean."
LongDesc="Operands of logical operators (&&, ||, and !) were found that are not effectively Boolean."
Severity=Low
IdenticalTo=MISRAC++2008-5-3-1
Default=off
Visible=Yes

CheckName=MISRAC2004-12.6_b
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Advisory) Expressions that are effectively boolean should not be used as operands to operators other than (&&, ||, !, =, ==, !=, and ?:)."
LongDesc="Uses of arithmetic operators on Boolean operands were found."
Severity=Low
IdenticalTo=MISRAC++2008-4-5-1
Default=off
Visible=Yes

CheckName=MISRAC2004-12.7
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) Bitwise operators shall not be applied to operands whose underlying type is signed."
LongDesc="Applications of bitwise operators to signed operands were found."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-21
Default=on
Visible=Yes

CheckName=MISRAC2004-12.8
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The right-hand operand of a shift operator shall lie between zero and one less than the width in bits of the underlying type of the left-hand operand."
LongDesc="Shifts were found where the right-hand operand might be negative, or too large."
Severity=Medium
IdenticalTo=ATH-shift-bounds MISRAC++2008-5-8-1 MISRAC2012-Rule-12.2
Default=on
Visible=Yes

CheckName=MISRAC2004-12.9
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The unary minus operator shall not be applied to an expression whose underlying type is unsigned."
LongDesc="Uses of unary minus on unsigned expressions were found."
Severity=Low
IdenticalTo=MISRAC2012-Rule-10.1_R8 MISRAC++2008-5-3-2 MISRAC++2023-8.3.1
Default=on
Visible=Yes

CheckName=MISRAC2004-12.10
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The comma operator shall not be used."
LongDesc="Uses of the comma operator were found."
Severity=Low
IdenticalTo=MISRAC++2008-5-18-1 MISRAC2012-Rule-12.3 MISRAC++2023-8.19.1
Default=on
Visible=Yes

CheckName=MISRAC2004-12.11
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Advisory) Evaluation of constant unsigned integer expressions should not lead to wrap-around."
LongDesc="Found a constant unsigned integer expression that overflows."
Severity=Medium
IdenticalTo=EXPR-const-overflow MISRAC++2008-5-19-1 MISRAC2012-Rule-12.4 MISRAC++2023-8.20.1
Default=off
Visible=Yes

CheckName=MISRAC2004-12.12_a
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The underlying bit representations of floating-point values shall not be used. To reinterpret bit patterns deliberately, use an explicit cast."
LongDesc="Found a read access to a field of a union following a write access to a different field, which effectively re-interprets the bit pattern with a different type."
Severity=Medium
IdenticalTo=UNION-type-punning
Default=on
Visible=Yes

CheckName=MISRAC2004-12.12_b
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Required) The underlying bit representations of floating-point values shall not be used."
LongDesc="An expression was found that provides access to the bit representation of a floating-point variable."
Severity=Medium
IdenticalTo=MISRAC++2008-3-9-3
Default=on
Visible=Yes

CheckName=MISRAC2004-12.13
Package=MISRAC2004
Group=MISRAC2004-12
CheckSynopsis="(Advisory) The increment (++) and decrement (--) operators should not be mixed with other operators in an expression."
LongDesc="Uses of the increment (++) and decrement (--) operators werew found mixed with other operators in an expression."
Severity=Low
IdenticalTo=MISRAC++2008-5-2-10 MISRAC2012-Rule-13.3
Default=off
Visible=Yes

CheckName=MISRAC2004-13.1
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Required) Assignment operators shall not be used in expressions that yield a boolean value."
LongDesc="Assignment operators were found in expressions that yield a Boolean value."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-13.2_a
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Advisory) Tests of a value against zero should be made explicit, unless the operand is effectively boolean."
LongDesc="Non-Boolean termination conditions were found in do ... while statements."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-13_a MISRAC2012-Rule-14.4_a
Default=off
Visible=Yes

CheckName=MISRAC2004-13.2_b
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Advisory) Tests of a value against zero should be made explicit, unless the operand is effectively boolean."
LongDesc="Non-boolean termination conditions were found in for loops."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-13_b MISRAC2012-Rule-14.4_b
Default=off
Visible=Yes

CheckName=MISRAC2004-13.2_c
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Advisory) Tests of a value against zero should be made explicit, unless the operand is effectively boolean."
LongDesc="Non-Boolean conditions were found in if statements."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-13_c MISRAC2012-Rule-14.4_c
Default=off
Visible=Yes

CheckName=MISRAC2004-13.2_d
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Advisory) Tests of a value against zero should be made explicit, unless the operand is effectively boolean."
LongDesc="Non-Boolean termination conditions were found in while statements."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-13_d MISRAC2012-Rule-14.4_d
Default=off
Visible=Yes

CheckName=MISRAC2004-13.2_e
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Advisory) Tests of a value against zero should be made explicit, unless the operand is effectively boolean."
LongDesc="Non-Boolean operands to the conditional ( ? : ) operator were found."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-14
Default=off
Visible=Yes

CheckName=MISRAC2004-13.3
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Required) Floating-point expressions shall not be tested for equality or inequality."
LongDesc="Floating-point comparisons using == or != were found."
Severity=Low
IdenticalTo=ATH-cmp-float MISRAC++2008-6-2-2
Default=on
Visible=Yes

CheckName=MISRAC2004-13.4
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Required) The controlling expression of a for statement shall not contain any objects of floating type."
LongDesc="Floating-point values were found in the controlling expression of a for statement."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-13.5
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Required) The three expressions of a for statement shall be concerned only with loop control."
LongDesc="A for loop counter variable is not initialized in the for loop."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-13.6
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Required) Numeric variables being used within a for loop for iteration counting shall not be modified in the body of the loop."
LongDesc="A for loop counter variable was found that is modified in the body of the loop."
Severity=Low
IdenticalTo=MISRAC++2008-6-5-3
Default=on
Visible=Yes

CheckName=MISRAC2004-13.7_a
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Required) Boolean operations whose results are invariant shall not be permitted."
LongDesc="A comparison using ==, <, <=, >, or >= was found that always evaluates to true."
Severity=Low
IdenticalTo=RED-cmp-always
Default=on
Visible=Yes

CheckName=MISRAC2004-13.7_b
Package=MISRAC2004
Group=MISRAC2004-13
CheckSynopsis="(Required) Boolean operations whose results are invariant shall not be permitted."
LongDesc="A comparison using ==, <, <=, >, or >= was found that always evaluates to false."
Severity=Low
IdenticalTo=RED-cmp-never
Default=on
Visible=Yes

CheckName=MISRAC2004-14.1
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) There shall be no unreachable code."
LongDesc="A part of the application is not executed on any of the execution paths."
Severity=Low
IdenticalTo=RED-dead MISRAC++2008-0-1-1 MISRAC++2008-0-1-9 MISRAC2012-Rule-2.1_b MISRAC++2023-0.0.1
Default=on
Visible=Yes

CheckName=MISRAC2004-14.2
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) All non-null statements shall either have at least one side effect however executed, or cause control flow to change."
LongDesc="A statement was found that potentially contains no side effects."
Severity=Low
IdenticalTo=RED-no-effect MISRAC2012-Rule-2.2_a
Default=on
Visible=Yes

CheckName=MISRAC2004-14.3
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) Before preprocessing, a null statement shall only occur on a line by itself; it may be followed by a comment, provided that the first character following the null statement is a whitespace character."
LongDesc="There are stray semicolons on the same line as other code."
Severity=Low
IdenticalTo=EXP-stray-semicolon MISRAC++2008-6-2-3
Default=on
Visible=Yes

CheckName=MISRAC2004-14.4
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) The goto statement shall not be used."
LongDesc="Uses of the goto statement were found."
Severity=Low
IdenticalTo=MISRAC2012-Rule-15.1 MISRAC++2023-9.6.1
Default=on
Visible=Yes

CheckName=MISRAC2004-14.5
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) The continue statement shall not be used."
LongDesc="Uses of the continue statement were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-14.6
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) For any iteration statement, there shall be at most one break statement used for loop termination."
LongDesc="Multiple termination points were found in a loop."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-14.7
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) A function shall have a single point of exit at the end of the function."
LongDesc="More than one point of exit was found in a function, or an exit point before the end of the function."
Severity=Low
IdenticalTo=MISRAC++2008-6-6-5 MISRAC2012-Rule-15.5
Default=on
Visible=Yes

CheckName=MISRAC2004-14.8_a
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) The statement forming the body of a switch, while, do ... while, or for statement shall be a compound statement."
LongDesc="There are missing braces in one or more do ... while statements."
Severity=Low
IdenticalTo=MISRAC++2008-6-3-1_a MISRAC2012-Rule-15.6_a
Default=on
Visible=Yes

CheckName=MISRAC2004-14.8_b
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) The statement forming the body of a switch, while, do ... while, or for statement shall be a compound statement."
LongDesc="There are missing braces in one or more for statements."
Severity=Low
IdenticalTo=MISRAC++2008-6-3-1_b MISRAC2012-Rule-15.6_b
Default=on
Visible=Yes

CheckName=MISRAC2004-14.8_c
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) The statement forming the body of a switch, while, do ... while, or for statement shall be a compound statement."
LongDesc="There are missing braces in one or more switch statements."
Severity=Low
IdenticalTo=MISRAC++2008-6-3-1_c MISRAC2012-Rule-15.6_d
Default=on
Visible=Yes

CheckName=MISRAC2004-14.8_d
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) The statement forming the body of a switch, while, do ... while, or for statement shall be a compound statement."
LongDesc="There are missing braces in one or more while statements."
Severity=Low
IdenticalTo=MISRAC++2008-6-3-1_d MISRAC2012-Rule-15.6_e
Default=on
Visible=Yes

CheckName=MISRAC2004-14.9
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) An if expression construct shall be followed by a compound statement. The else keyword shall be followed by either a compound statement or another if statement."
LongDesc="There are missing braces in one or more if, else, or else if statements."
Severity=Low
IdenticalTo=MISRAC++2008-6-4-1 MISRAC2012-Rule-15.6_c
Default=on
Visible=Yes

CheckName=MISRAC2004-14.10
Package=MISRAC2004
Group=MISRAC2004-14
CheckSynopsis="(Required) All if ... else if constructs shall be terminated with an else clause."
LongDesc="One or more if ... else if constructs were found that are not terminated with an else clause."
Severity=Low
IdenticalTo=MISRAC++2008-6-4-2 MISRAC2012-Rule-15.7 MISRAC++2023-9.4.1
Default=on
Visible=Yes

CheckName=MISRAC2004-15.0
Package=MISRAC2004
Group=MISRAC2004-15
CheckSynopsis="(Required) The MISRA C switch syntax shall be used."
LongDesc="Switch statements were found that do not conform to the MISRA C switch syntax."
Severity=Low
IdenticalTo=MISRAC2012-Rule-16.1
Default=on
Visible=Yes

CheckName=MISRAC2004-15.1
Package=MISRAC2004
Group=MISRAC2004-15
CheckSynopsis="(Required) A switch label shall only be used when the most closely-enclosing compound statement is the body of a switch statement."
LongDesc="Switch labels were found in nested blocks."
Severity=Low
IdenticalTo=MISRAC++2008-6-4-4 MISRAC2012-Rule-16.2 MISRAC++2023-9.4.2_f
Default=on
Visible=Yes

CheckName=MISRAC2004-15.2
Package=MISRAC2004
Group=MISRAC2004-15
CheckSynopsis="(Required) An unconditional break statement shall terminate every non-empty switch clause."
LongDesc="Non-empty switch cases were found that are not terminated by a break statement."
Severity=Medium
IdenticalTo=MISRAC++2008-6-4-5 MISRAC2012-Rule-16.3 MISRAC++2023-9.4.2_b
Default=on
Visible=Yes

CheckName=MISRAC2004-15.3
Package=MISRAC2004
Group=MISRAC2004-15
CheckSynopsis="(Required) The final clause of a switch statement shall be the default clause."
LongDesc="Switch statements were found without a default clause, or with a default clause that is not the final clause."
Severity=Low
IdenticalTo=MISRAC++2008-6-4-6
Default=on
Visible=Yes

CheckName=MISRAC2004-15.4
Package=MISRAC2004
Group=MISRAC2004-15
CheckSynopsis="(Required) A switch expression shall not represent a value that is effectively boolean."
LongDesc="A switch expression was found that represents a value that is effectively Boolean."
Severity=Low
IdenticalTo=MISRAC++2008-6-4-7 MISRAC2012-Rule-16.7
Default=on
Visible=Yes

CheckName=MISRAC2004-15.5
Package=MISRAC2004
Group=MISRAC2004-15
CheckSynopsis="(Required) Every switch statement shall have at least one case clause."
LongDesc="Switch statements without case clauses were found."
Severity=Low
IdenticalTo=MISRAC++2008-6-4-8 MISRAC++2023-9.4.2_d
Default=on
Visible=Yes

CheckName=MISRAC2004-16.1
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) Functions shall not be defined with a variable number of arguments."
LongDesc="Functions that are defined using ellipsis (...) notation were found."
Severity=Low
IdenticalTo=MISRAC++2008-8-4-1
Default=on
Visible=Yes

CheckName=MISRAC2004-16.2_a
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) Functions shall not call themselves, either directly or indirectly."
LongDesc="Functions were found that call themselves directly."
Severity=Low
IdenticalTo=MISRAC++2008-7-5-4_a MISRAC2012-Rule-17.2_a MISRAC++2023-8.2.10_a
Default=on
Visible=Yes

CheckName=MISRAC2004-16.2_b
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) Functions shall not call themselves, either directly or indirectly."
LongDesc="Functions were found that call themselves indirectly."
Severity=Low
IdenticalTo=MISRAC++2008-7-5-4_b MISRAC2012-Rule-17.2_b MISRAC++2023-8.2.10_b
Default=on
Visible=Yes

CheckName=MISRAC2004-16.3
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) Identifiers shall be given for all of the parameters in a function prototype declaration."
LongDesc="Function prototypes were found that do not give all parameters a name."
Severity=Low
IdenticalTo=MISRAC2012-Rule-8.2_b
Default=on
Visible=Yes

CheckName=MISRAC2004-16.4
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) The identifiers used in the declaration and definition of a function shall be identical."
LongDesc="The parameter names between the function declaration and definition does not match."
Severity=Low
IdenticalTo=MISRAC++2008-8-4-2_a MISRAC++2023-13.3.3_a
Default=on
Visible=Yes

CheckName=MISRAC2004-16.5
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) Functions with no parameters shall be declared and defined with the parameter list void."
LongDesc="Functions were found that are declared with an empty () parameter list that does not form a valid prototype."
Severity=Medium
IdenticalTo=FUNC-unprototyped-all MISRAC2012-Rule-8.2_a
Default=on
Visible=Yes

CheckName=MISRAC2004-16.7
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) A pointer parameter in a function prototype should be declared as pointer to const if the pointer is not used to modify the addressed object."
LongDesc="A function was found that does not modify one of its parameters."
Severity=Low
IdenticalTo=MISRAC++2008-7-1-2 MISRAC++2023-10.1.1
Default=on
Visible=Yes

CheckName=MISRAC2004-16.8
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) All exit paths from a function with non-void return type shall have an explicit return statement with an expression."
LongDesc="For some execution paths, no return statement is executed in a function with a non-void return type."
Severity=Medium
IdenticalTo=SPC-return MISRAC++2008-8-4-3 MISRAC2012-Rule-17.4 MISRAC++2023-9.6.5
Default=on
Visible=Yes

CheckName=MISRAC2004-16.9
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) A function identifier shall only be used with either a preceding &, or with a parenthesized parameter list, which may be empty."
LongDesc="One or more function addresses are taken without an explicit &."
Severity=Low
IdenticalTo=MISRAC++2008-8-4-4
Default=on
Visible=Yes

CheckName=MISRAC2004-16.10
Package=MISRAC2004
Group=MISRAC2004-16
CheckSynopsis="(Required) If a function returns error information, then that error information shall be tested."
LongDesc="A return value for a library function that might return an error value is not used."
Severity=Medium
IdenticalTo=LIB-return-error MISRAC++2008-0-3-2
Default=on
Visible=Yes

CheckName=MISRAC2004-17.1_a
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) Pointer arithmetic shall only be applied to pointers that address an array or array element."
LongDesc="A direct access to a field of a struct was found, that uses an offset from the address of the struct."
Severity=Medium
IdenticalTo=PTR-arith-field
Default=on
Visible=Yes

CheckName=MISRAC2004-17.1_b
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) Pointer arithmetic shall only be applied to pointers that address an array or array element."
LongDesc="Detected pointer arithmetic applied to a pointer that references a stack address."
Severity=Medium
IdenticalTo=PTR-arith-stack MISRAC++2008-5-0-16_a
Default=on
Visible=Yes

CheckName=MISRAC2004-17.1_c
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) Pointer arithmetic shall only be applied to pointers that address an array or array element."
LongDesc="Detected invalid pointer arithmetic with an automatic variable that is neither an array nor a pointer."
Severity=Medium
IdenticalTo=PTR-arith-var MISRAC++2008-5-0-16_b
Default=on
Visible=Yes

CheckName=MISRAC2004-17.2
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) Pointer subtraction shall only be applied to pointers that address elements of the same array.  Note: This rule will only accept arrays of the form '<type> <name>[<size>]'."
LongDesc="A subtraction was found between pointers that address elements of different arrays."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-18.2 CERT-ARR36-C_a
Default=on
Visible=Yes

CheckName=MISRAC2004-17.3
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) >, >=, < and <= shall not be applied to pointer types except where they point to the same array."
LongDesc="A relational operator was found applied to an object of pointer type that does not point into the same object."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-18.3 CERT-ARR36-C_b
Default=on
Visible=Yes

CheckName=MISRAC2004-17.4_a
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) Array indexing shall be the only allowed form of pointer arithmetic."
LongDesc="Pointer arithmetic that is not array indexing was detected."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-15_a
Default=on
Visible=Yes

CheckName=MISRAC2004-17.4_b
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) Array indexing shall be the only allowed form of pointer arithmetic."
LongDesc="Array indexing was detected applied to an object defined as a pointer type."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-15_b
Default=on
Visible=Yes

CheckName=MISRAC2004-17.5
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) The declaration of objects should contain no more than two levels of pointer indirection."
LongDesc="One or more declarations of objects were found that contain more than two levels of pointer indirection."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-19 MISRAC2012-Rule-18.5 MISRAC++2023-11.3.2
Default=on
Visible=Yes

CheckName=MISRAC2004-17.6_a
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist."
LongDesc="Detected the return of a stack address."
Severity=High
IdenticalTo=MEM-stack MISRAC++2008-7-5-1_b MISRAC++2023-6.8.2_b MISRAC2012-Rule-18.6_a CERT-DCL30-C_a
Default=on
Visible=Yes

CheckName=MISRAC2004-17.6_b
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist."
LongDesc="Detected a stack address stored in a global pointer."
Severity=High
IdenticalTo=MEM-stack-global MISRAC++2008-7-5-2_a MISRAC++2023-6.8.3_a MISRAC2012-Rule-18.6_b CERT-DCL30-C_c
Default=on
Visible=Yes

CheckName=MISRAC2004-17.6_c
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist."
LongDesc="Detected a stack address stored in the field of a global struct."
Severity=High
IdenticalTo=MEM-stack-global-field MISRAC++2008-7-5-2_b MISRAC++2023-6.8.3_b MISRAC2012-Rule-18.6_c CERT-DCL30-C_d
Default=on
Visible=Yes

CheckName=MISRAC2004-17.6_d
Package=MISRAC2004
Group=MISRAC2004-17
CheckSynopsis="(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist."
LongDesc="Detected a stack address stored outside a function via a parameter."
Severity=High
IdenticalTo=MEM-stack-param MISRAC++2008-7-5-2_c MISRAC++2023-6.8.3_c MISRAC2012-Rule-1.3_s MISRAC2012-Rule-18.6_d CERT-DCL30-C_e
Default=on
Visible=Yes

CheckName=MISRAC2004-18.1
Package=MISRAC2004
Group=MISRAC2004-18
CheckSynopsis="(Required) All structure and union types shall be complete at the end of the translation unit."
LongDesc="Structs and unions were found that are used without being defined."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-18.2
Package=MISRAC2004
Group=MISRAC2004-18
CheckSynopsis="(Required) An object shall not be assigned to an overlapping object."
LongDesc="Assignments from one field of a union to another were found."
Severity=High
IdenticalTo=UNION-overlap-assign MISRAC++2008-0-2-1 MISRAC2012-Rule-19.1 MISRAC++2023-8.18.1
Default=on
Visible=Yes

CheckName=MISRAC2004-18.4
Package=MISRAC2004
Group=MISRAC2004-18
CheckSynopsis="(Required) Unions shall not be used."
LongDesc="Unions were detected."
Severity=Low
IdenticalTo=MISRAC++2008-9-5-1 MISRAC2012-Rule-19.2 MISRAC++2023-12.3.1
Default=on
Visible=Yes

CheckName=MISRAC2004-19.1
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Advisory) #include statements in a file should only be preceded by other preprocessor directives or comments."
LongDesc="#include directives were found that are not first in the source file."
Severity=Low
IdenticalTo=MISRAC2012-Rule-20.1 MISRAC++2008-16-0-1 MISRAC++2023-19.0.3
Default=off
Visible=Yes

CheckName=MISRAC2004-19.2
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Advisory) Non-standard characters should not occur in header file names in #include directives."
LongDesc="There are illegal characters in header file names."
Severity=Low
IdenticalTo=MISRAC2012-Rule-20.2
Default=off
Visible=Yes

CheckName=MISRAC2004-19.4
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Required) C macros shall only expand to a braced initialiser, a constant, a string literal, a parenthesised expression, a type qualifier, a storage class specifier, or a do-while-zero construct."
LongDesc="A macro definition was found that is not permitted."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-19.5
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Required) Macros shall not be #define'd or #undef'd within a block."
LongDesc="A #define or #undef was found inside a block."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-19.6
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Required) #undef shall not be used."
LongDesc="#undef directives were found."
Severity=Low
IdenticalTo=MISRAC++2008-16-0-3 MISRAC2012-Rule-20.5
Default=on
Visible=Yes

CheckName=MISRAC2004-19.7
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Advisory) A function should be used in preference to a function-like macro."
LongDesc="Function-like macros were detected."
Severity=Low
IdenticalTo=MISRAC++2008-16-0-4 MISRAC2012-Dir-4.9 MISRAC++2023-19.0.2
Default=off
Visible=Yes

CheckName=MISRAC2004-19.10
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Required) In the definition of a function-like macro each instance of a parameter shall be enclosed in parentheses unless it is used as the operand of # or ##."
LongDesc="A macro parameter was not enclosed in parentheses or used as the operand of # or ##."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2004-19.12
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Required) There shall be at most one occurrence of the # or ## preprocessor operators in a single macro definition."
LongDesc="Multiple # or ## preprocessor operators were found in a macro definition."
Severity=Medium
IdenticalTo=DEFINE-hash-multiple MISRAC++2008-16-3-1
Default=on
Visible=Yes

CheckName=MISRAC2004-19.13
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Advisory) The # and ## preprocessor operators should not be used."
LongDesc="Uses were found of the # and ## operators."
Severity=Low
IdenticalTo=MISRAC++2008-16-3-2 MISRAC2012-Rule-20.10 MISRAC++2023-19.3.1
Default=off
Visible=Yes

CheckName=MISRAC2004-19.15
Package=MISRAC2004
Group=MISRAC2004-19
CheckSynopsis="(Required) Precautions shall be taken in order to prevent the contents of a header file being included twice."
LongDesc="Header files were found without #include guards."
Severity=Low
IdenticalTo=MISRAC++2008-16-2-3 MISRAC2012-Dir-4.10 MISRAC++2023-19.2.1
Default=on
Visible=Yes

CheckName=MISRAC2004-20.1
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) Reserved identifiers, macros, and functions in the standard library shall not be defined, redefined, or undefined."
LongDesc="Detected a #define or #undef of a reserved identifier in the standard library."
Severity=Low
IdenticalTo=MISRAC++2008-17-0-1 MISRAC2012-Rule-21.1
Default=on
Visible=Yes

CheckName=MISRAC2004-20.2
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The names of standard library macros, objects and functions shall not be reused."
LongDesc="One or more library functions are being overridden."
Severity=Low
IdenticalTo=MISRAC++2008-17-0-3 MISRAC2012-Rule-21.2 CERT-DCL37-C_a
Default=on
Visible=Yes

CheckName=MISRAC2004-20.3_a
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (>0 case)."
LongDesc="A parameter value (<=0) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.11_a
Default=on
Visible=Yes

CheckName=MISRAC2004-20.3_b
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (>=0 case)."
LongDesc="A parameter value (<0) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.11_b
Default=on
Visible=Yes

CheckName=MISRAC2004-20.3_c
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (!=0 case)."
LongDesc="A parameter value (==0) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.11_c
Default=on
Visible=Yes

CheckName=MISRAC2004-20.3_d
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (<=1 case)."
LongDesc="A parameter value (>1) might cause domain or range error."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.11_d
Default=on
Visible=Yes

CheckName=MISRAC2004-20.3_e
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (<1 case)."
LongDesc="A parameter value (>=1) might cause domain or range error."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.11_e
Default=on
Visible=Yes

CheckName=MISRAC2004-20.3_f
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (>=-1 case)."
LongDesc="A parameter value (<-1) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.11_f
Default=on
Visible=Yes

CheckName=MISRAC2004-20.3_g
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (>-1 case)."
LongDesc="A parameter value (<=-1) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.11_g
Default=on
Visible=Yes

CheckName=MISRAC2004-20.3_h
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (<=255 case)."
LongDesc="A parameter value (>255) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.11_h
Default=on
Visible=Yes

CheckName=MISRAC2004-20.3_i
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (min value case)."
LongDesc="A parameter value (min) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.11_i
Default=on
Visible=Yes

CheckName=MISRAC2004-20.4
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) Dynamic heap memory allocation shall not be used."
LongDesc="Detected use of malloc, calloc, realloc, or free."
Severity=Low
IdenticalTo=MISRAC++2008-18-4-1 MISRAC2012-Rule-21.3 MISRAC++2023-21.6.1_a
Default=on
Visible=Yes

CheckName=MISRAC2004-20.5
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The error indicator errno shall not be used."
LongDesc="Detected use of the error indicator errno."
Severity=Low
IdenticalTo=MISRAC++2008-19-3-1
Default=on
Visible=Yes

CheckName=MISRAC2004-20.6
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The macro offsetof in the stddef.h library shall not be used."
LongDesc="Detected use of the built-in function offsetof."
Severity=Low
IdenticalTo=MISRAC++2008-18-2-1 MISRAC++2023-21.2.4
Default=on
Visible=Yes

CheckName=MISRAC2004-20.7
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The setjmp macro and the longjmp function shall not be used."
LongDesc="Detected use of setjmp.h."
Severity=Low
IdenticalTo=MISRAC++2008-17-0-5 MISRAC2012-Rule-21.4
Default=on
Visible=Yes

CheckName=MISRAC2004-20.8
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The signal handling facilities of signal.h shall not be used."
LongDesc="Use of signal.h was detected."
Severity=Low
IdenticalTo=MISRAC++2008-18-7-1 MISRAC2012-Rule-21.5 MISRAC++2023-21.10.3
Default=on
Visible=Yes

CheckName=MISRAC2004-20.9
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The input/output library stdio.h shall not be used in production code."
LongDesc="Use of stdio.h was detected."
Severity=Low
IdenticalTo=MISRAC++2008-27-0-1 MISRAC2012-Rule-21.6 MISRAC++2023-30.0.1
Default=on
Visible=Yes

CheckName=MISRAC2004-20.10
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The functions atof, atoi, and atol from the library stdlib.h shall not be used."
LongDesc="Use of the functions atof, atoi, atol, or atoll was detected."
Severity=Low
IdenticalTo=MISRAC++2008-18-0-2 MISRAC2012-Rule-21.7 MISRAC++2023-21.2.1
Default=on
Visible=Yes

CheckName=MISRAC2004-20.11
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The functions abort, exit, getenv, and system from the library stdlib.h shall not be used."
LongDesc="Use of the functions abort, exit, getenv, or system was detected."
Severity=Low
IdenticalTo=MISRAC++2008-18-0-3 MISRAC2012-Rule-21.8
Default=on
Visible=Yes

CheckName=MISRAC2004-20.12
Package=MISRAC2004
Group=MISRAC2004-20
CheckSynopsis="(Required) The time handling functions of time.h shall not be used."
LongDesc="Use of the time.h functions was detected: asctime, clock, ctime, difftime, gmtime, localtime, mktime, strftime, or time."
Severity=Low
IdenticalTo=MISRAC++2008-18-0-4 MISRAC2012-Rule-21.10
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.3
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) Assembly language shall be encapsulated and isolated"
LongDesc="Inline assembler statements were found that are not encapsulated in functions."
Severity=Low
IdenticalTo=MISRAC2004-2.1 MISRAC++2008-7-4-3
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.4
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Sections of code should not be "commented out" Code sections in comments were found where the comment ends with a ';', '{', or '}' character."
LongDesc="Code sections in comments were found where the comment ends with a ';', '{', or '}' character."
Severity=Low
IdenticalTo=MISRAC2004-2.4
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.5
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Identifiers in the same namespace, with overlapping visibility, should be typographically unambiguous."
LongDesc="Identifiers in the same namespace, with overlapping visibility, should be typographically unambiguous."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.6_a
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) typedefs that indicate size and signedness should be used in place of the basic numerical types The basic types char, int, short, long, double, and float are used without a typedef. Best practice is to use typedefs for portability."
LongDesc="The basic types char, int, short, long, double, and float are used without a typedef."
Severity=Low
IdenticalTo=MISRAC2004-6.3 MISRAC++2008-3-9-2 MISRAC++2023-6.9.2
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.6_b
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) typedefs that indicate size and signedness should be used in place of the basic numerical types"
LongDesc="Typedefs of basic types were found with names that do not indicate the size or signedness."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.7_a
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) If a function returns error information, then that error information shall be tested."
LongDesc="Returned error information should be tested."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.7_b
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) If a function returns error information, then that error information shall be tested."
LongDesc="Returned error information should be tested."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.7_c
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) If a function returns error information, then that error information shall be tested."
LongDesc="Returned error information should be tested."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.8
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) If a pointer to a structure or union is never dereferenced within a translation unit, then the implementation of the object should be hidden."
LongDesc="The implementation of a structure is unnecessarily exposed to a translation unit."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.9
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) A function should be used in preference to a function-like macro where they are interchangeable"
LongDesc="Function-like macros were detected."
Severity=Low
IdenticalTo=MISRAC2004-19.7 MISRAC++2008-16-0-4 MISRAC++2023-19.0.2
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.10
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) Precautions shall be taken in order to prevent the contents of a header file being included more than once"
LongDesc="Header files were found without #include guards."
Severity=Low
IdenticalTo=MISRAC2004-19.15 MISRAC++2008-16-2-3 MISRAC++2023-19.2.1
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.11_a
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (>0 case)."
LongDesc="A parameter value (<=0) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2004-20.3_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.11_b
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (>=0 case)."
LongDesc="A parameter value (<0) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2004-20.3_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.11_c
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (!=0 case)."
LongDesc="A parameter value (==0) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2004-20.3_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.11_d
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (<=1 case)."
LongDesc="A parameter value (>1) might cause domain or range error."
Severity=Medium
IdenticalTo=MISRAC2004-20.3_d
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.11_e
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (<1 case)."
LongDesc="A parameter value (>=1) might cause domain or range error."
Severity=Medium
IdenticalTo=MISRAC2004-20.3_e
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.11_f
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (>=-1 case)."
LongDesc="A parameter value (<-1) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2004-20.3_f
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.11_g
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (>-1 case)."
LongDesc="A parameter value (<=-1) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2004-20.3_g
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.11_h
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (<=255 case)."
LongDesc="A parameter value (>255) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2004-20.3_h
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.11_i
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values passed to library functions shall be checked (min value case)."
LongDesc="A parameter value (min) might cause a domain or range error."
Severity=Medium
IdenticalTo=MISRAC2004-20.3_i
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.12
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) Dynamic memory allocation shall not be used."
LongDesc="Dynamic memory allocation found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.13_a
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Functions which are designed to provide operations on a resource should be called in an approriate sequence.  A mutex is locked and then never released. This might cause a deadlock."
LongDesc="A mutex is locked, but not unlocked"
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.13_b
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Functions which are designed to provide operations on a resource should be called in an approriate sequence. Memory is allocated, but then the pointer value is lost due to reassignment or its scope ending, without a guarantee of the value being propagated or the memory being freed.  There must be no possible execution path during which the value is not freed, returned, or passed into another function as an argument, before it is lost.  This is a memory leak."
LongDesc="Incorrect deallocation causes memory leak."
Severity=Medium
IdenticalTo=MEM-leak-alias
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.13_c
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Functions which are designed to provide operations on a resource should be called in an approriate sequence.  One or more file pointers are never closed. To avoid failure caused by resource exhaustion, all file pointers obtained dynamically by means of Standard Library functions must be explicitly released.  Releasing them as soon as possible reduces the risk that exhaustion will occur."
LongDesc="A file pointer is never closed."
Severity=High
IdenticalTo=MISRAC2012-Rule-22.1_b RESOURCE-file-no-close-all SEC-FILEOP-open-no-close CERT-FIO42-C_a
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.13_d
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Functions which are designed to provide operations on a resource should be called in an appropriate sequence.  Memory is being accessed after it has been deallocated. The application might appear to run normally, but the operation is illegal.  The most likely result is a crash, but the application might keep running with erroneous or corrupt data."
LongDesc="A pointer is used after it has been freed."
Severity=High
IdenticalTo=MISRAC2012-Rule-1.3_o SEC-BUFFER-use-after-free-all CERT-MEM30-C_a MEM-use-free-all
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.13_e
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Functions which are designed to provide operations on a resource should be called in an appropriate sequence.  A pointer is used after it has been freed.  This might cause data corruption or an application crash."
LongDesc="A pointer is used after it has been freed."
Severity=High
IdenticalTo=MISRAC2012-Rule-1.3_p SEC-BUFFER-use-after-free-some MEM-use-free-some CERT-MEM30-C_b
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.13_f
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Functions which are designed to provide operations on a resource should be called in an appropriate sequence.  A file resource is referred to after it has been closed. When a file has been closed, any reference to it is invalid. Using this reference might cause an application crash."
LongDesc="A file resource is used after it has been closed."
Severity=High
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.13_g
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Functions which are designed to provide operations on a resource should be called in an appropriate sequence.  A pointer is freed without having been allocated."
LongDesc="A pointer is freed without having been allocated."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.13_h
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Advisory) Functions which are designed to provide operations on a resource should be called in an appropriate sequence.  A struct field is deallocated without first having been allocated. This might cause a runtime error."
LongDesc="A struct field is deallocated without first having been allocated."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_a
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="User input used as an argument to printf without validation."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_b
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="A user is able to control the amount of memory used in an allocation."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_c
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="User input is copied into a buffer."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_d
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="A tainted value is used as the size of the memory copied from one buffer to another."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_e
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="An array is accessed with an index derived from user input."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_f
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="A user-controlled variable is used as an offset to a pointer without proper bounds checking."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_g
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="User input is used as a divisor without validation."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_h
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="A user-controlled value is used as part of a loop condidition."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_i
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="User input is used as a value in the environment."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_j
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="User input is improperly used in an LDAP query."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_k
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="User input is used as part of a system command."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Dir-4.14_l
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="User input is improperly used in an SQL statement."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.14_m
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) The validity of values received from external sources shall be checked."
LongDesc="User input is improperly used as an XPath expression."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Dir-4.15
Package=MISRAC2012
Group=MISRAC2012-Dir-4
CheckSynopsis="(Required) Evaluation of floating-point expressions shall not lead to the
undetected generation of infinities and NaNs."
LongDesc="Unhandled infinite or NaN in floating-point expressions found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_a
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="An expression resulting in 0 is used as a divisor."
Severity=High
IdenticalTo=ATH-div-0 MISRAC2004-1.2_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_b
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A variable was found that is assigned the value 0, and then used as a divisor."
Severity=High
IdenticalTo=ATH-div-0-assign MISRAC2004-1.2_d CERT-INT33-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_c
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A variable is used as a divisor after a successful comparison with 0."
Severity=Medium
IdenticalTo=ATH-div-0-cmp-aft MISRAC2004-1.2_e SEC-DIV-0-compare-after CERT-INT33-C_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_d
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A variable used as a divisor is subsequently compared with 0."
Severity=Low
IdenticalTo=ATH-div-0-cmp-bef MISRAC2004-1.2_f SEC-DIV-0-compare-before CERT-INT33-C_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_e
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A value that is determined using interval analysis to be 0 is used as a divisor."
Severity=Medium
IdenticalTo=ATH-div-0-interval MISRAC2004-1.2_g CERT-INT33-C_d
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_f
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="An expression that might be 0 is used as a divisor."
Severity=High
IdenticalTo=ATH-div-0-pos MISRAC2004-1.2_h CERT-INT33-C_e
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_g
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A global variable is not checked against 0 before it is used as a divisor."
Severity=Medium
IdenticalTo=ATH-div-0-unchk-global MISRAC2004-1.2_i CERT-INT33-C_f
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_h
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A local variable is not checked against 0 before it is used as a divisor."
Severity=Medium
IdenticalTo=ATH-div-0-unchk-local MISRAC2004-1.2_j CERT-INT33-C_g
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_i
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="Expressions found that depend on order of evaluation."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-1_a MISRAC2004-12.2_a MISRAC2012-Rule-13.2_a SPC-order CERT-EXP30-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_j
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A variable is read before it is assigned a value."
Severity=High
IdenticalTo=MISRAC2004-9.1_a MISRAC++2008-8-5-1_a MISRAC2012-Rule-9.1_e SPC-uninit-var-all
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_k
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A variable is read before it is assigned a value."
Severity=High
IdenticalTo=MISRAC2004-9.1_b MISRAC++2008-8-5-1_b MISRAC2012-Rule-9.1_f SPC-uninit-var-some MISRAC++2023-11.6.2
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_l
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A call to strcat causes a destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_m
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A function pointer is used in an invalid context."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_n
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="The left-hand side of a right shift operation might be a negative value."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_o
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A pointer is used after it has been freed."
Severity=High
IdenticalTo=MISRAC2012-Dir-4.13_d SEC-BUFFER-use-after-free-all CERT-MEM30-C_a MEM-use-free-all
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_p
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A pointer is used after it has been freed."
Severity=High
IdenticalTo=MISRAC2012-Dir-4.13_e SEC-BUFFER-use-after-free-some MEM-use-free-some CERT-MEM30-C_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_q
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="Might return an address on the stack."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_r
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A stack address is stored in a global pointer."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_s
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A stack address is stored outside a function via a parameter."
Severity=High
IdenticalTo=MEM-stack-param MISRAC++2008-7-5-2_c MISRAC++2023-6.8.3_c MISRAC2004-17.6_d MISRAC2012-Rule-18.6_d CERT-DCL30-C_e
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_t
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A call to memcpy or memmove causes the memory to overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_u
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A call to memset causes a buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.3_v
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) There shall be no occurrence of undefined or critical unspecified behavior."
LongDesc="A call to strcpy causes a destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.4
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) Emergent language features shall not be used."
LongDesc="Uses of _Noreturn, _Atomic, _Thread_local, _Alignas, _Alignof or __STDC_WANT_LIB_EXT1__ were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.5_a
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) Obsolescent language features shall not be used."
LongDesc="Declaring an identifier with internal linkage at file scope without
the static storage class specifier is an obsolescent feature."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Rule-1.5_b
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) Obsolescent language features shall not be used."
LongDesc="The use of function declarators with empty parentheses (not prototype-format parameter type declarators) is an obsolescent feature."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.5_c
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) Obsolescent language features shall not be used."
LongDesc="The use of macro ATOMIC_VAR_INIT is an obsolescent feature."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.5_d
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) Obsolescent language features shall not be used."
LongDesc="The ability to undefine and perhaps then redefine the macros bool, true, and false is an obsolescent feature."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.5_e
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) Obsolescent language features shall not be used."
LongDesc="The gets function is obsolescent, and is deprecated."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.5_f
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) Obsolescent language features shall not be used."
LongDesc="The use of ungetc on a binary stream where the file position indicator is zero prior to the call is an obsolescent feature."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-1.5_g
Package=MISRAC2012
Group=MISRAC2012-Rule-1
CheckSynopsis="(Required) Obsolescent language features shall not be used. 
Invoking realloc with a size argument equal to zero is an obsolescent feature."
LongDesc="Found obsolescent use of realloc with size argument zero."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-2.1_a
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Required) A project shall not contain unreachable code."
LongDesc="A case statement within a switch statement cannot be reached."
Severity=Low
IdenticalTo=RED-case-reach MISRAC++2008-0-1-2_c MISRAC++2023-0.0.2_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-2.1_b
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Required) A project shall not contain unreachable code."
LongDesc="A part of the application is never executed."
Severity=Low
IdenticalTo=RED-dead MISRAC2004-14.1 MISRAC++2008-0-1-1 MISRAC++2008-0-1-9 MISRAC++2023-0.0.1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-2.2_a
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Required) There shall be no dead code."
LongDesc="A statement potentially contains no side effects."
Severity=Low
IdenticalTo=RED-no-effect MISRAC2004-14.2
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-2.2_b
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Required) There shall be no dead code."
LongDesc="A field in a struct is assigned a non-trivial value that is never used."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-2.2_c
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Required) There shall be no dead code."
LongDesc="A variable is assigned a value that is never used."
Severity=Low
IdenticalTo=RED-unused-val MISRAC++2008-0-1-6
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-2.3
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Advisory) A project should not contain unused type declarations."
LongDesc="Unused type declaration."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-2.4
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Advisory) A project should not contain unused tag declarations."
LongDesc="Unused tag declarations were found."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-2.5
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Advisory) A project should not contain unused macro declarations."
LongDesc="An unused macro declaration was found."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-2.6
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Advisory) A function should not contain unused label declarations."
LongDesc="A function was found that contains an unused label declaration."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-2.7
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Advisory) There should be no unused parameters in functions."
LongDesc="A function parameter is declared but not used."
Severity=Low
IdenticalTo=RED-unused-param MISRAC++2008-0-1-11 MISRAC++2023-0.2.2_a
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-2.8_a
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Advisory) A project should not contain unused Object definitions."
LongDesc="Unused external object definition."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-2.8_b
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Advisory) A project should not contain unused Object definitions."
LongDesc="Unused internal object definition."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-2.8_c
Package=MISRAC2012
Group=MISRAC2012-Rule-2
CheckSynopsis="(Advisory) A project should not contain unused Object definitions."
LongDesc="Unused local variable definition."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-3.1
Package=MISRAC2012
Group=MISRAC2012-Rule-3
CheckSynopsis="(Required) The character sequences /* and // shall not be used within a comment."
LongDesc="The character sequences /* and // were found within a comment."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-3.2
Package=MISRAC2012
Group=MISRAC2012-Rule-3
CheckSynopsis="(Required) Line-splicing shall not be used in // comments."
LongDesc="Line-splicing was found in // comments."
Severity=Medium
IdenticalTo=MISRAC++2023-5.7.3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-4.1
Package=MISRAC2012
Group=MISRAC2012-Rule-4
CheckSynopsis="(Required) Octal or hexadecimal escape sequences shall be terminated."
LongDesc="An octal or hexadecimal escape sequence was found that is not terminated."
Severity=Low
IdenticalTo=MISRAC++2023-5.13.2
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-4.2
Package=MISRAC2012
Group=MISRAC2012-Rule-4
CheckSynopsis="(Advisory) Trigraphs should not be used."
LongDesc="Trigraphs were found in string literals."
Severity=Low
IdenticalTo=STR-trigraph MISRAC2004-4.2 MISRAC++2008-2-3-1
Default=off
Visible=No

CheckName=MISRAC2012-Rule-5.1
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) External identifiers shall be distinct."
LongDesc="An external identifier was found that is not unique for the first 31 characters, but still not identical to another identifier."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.2_c89
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) Identifiers declared in the same scope and name space shall be distinct."
LongDesc="Identifier names were found that are not distinct in their first 31 characters from other names in the same scope."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.2_c99
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) Identifiers declared in the same scope and name space shall be distinct."
LongDesc="Identifier names were found that are not distinct in their first 63 characters from other names in the same scope."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.3_c89
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) An identifier declared in an inner scope shall not hide an identifier declared in an outer scope."
LongDesc="Identifier names were found that are not distinct in their first 31 characters from other names in an outer scope."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.3_c99
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) An identifier declared in an inner scope shall not hide an identifier declared in an outer scope."
LongDesc="Identifier names were found that are not distinct in their first 63 characters from other names in an outer scope."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.4_c89
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) Macro identifiers shall be distinct."
LongDesc="Macro names were found that are not distinct in their first 31 characters from their macro parameters or other macro names."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.4_c99
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) Macro identifiers shall be distinct."
LongDesc="Macro names were found that are not distinct in their first 63 characters from their macro parameters or other macro names."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.5_c89
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) Identifiers shall be distinct from macro names."
LongDesc="Non-macro identifiers were found that are not distinct in their first 31 characters from macro names."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.5_c99
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) Identifiers shall be distinct from macro names."
LongDesc="Non-macro identifiers were found that are not distinct in their first 63 characters from macro names."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.6
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) A typedef name shall be a unique identifier."
LongDesc="A typedef with this name has already been declared."
Severity=Low
IdenticalTo=MISRAC2004-5.3 MISRAC++2008-2-10-3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.7
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) A tag name shall be a unique identifier."
LongDesc="A class, struct, union, or enum declaration clashes with a previous declaration."
Severity=Low
IdenticalTo=MISRAC2004-5.4 MISRAC++2008-2-10-4
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.8
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Required) Identifiers that define objects or functions with external linkage shall be unique."
LongDesc="One or more external identifier names were found that are not unique."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-5.9
Package=MISRAC2012
Group=MISRAC2012-Rule-5
CheckSynopsis="(Advisory) Identifiers that define objects or functions with internal linkage should be unique."
LongDesc="An internal identifier name was found that is not unique."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-6.1
Package=MISRAC2012
Group=MISRAC2012-Rule-6
CheckSynopsis="(Required) Bitfields shall only be declared with an appropriate type."
LongDesc="Bitfields of plain int type were found."
Severity=Medium
IdenticalTo=MISRAC2004-6.4
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-6.2
Package=MISRAC2012
Group=MISRAC2012-Rule-6
CheckSynopsis="(Required) Single-bit named bitfields shall not be of a signed type."
LongDesc="Signed single-bit bitfields (excluding anonymous fields) were found."
Severity=Low
IdenticalTo=STRUCT-signed-bit MISRAC2004-6.5 MISRAC++2008-9-6-4 MISRAC++2023-12.2.3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-6.3
Package=MISRAC2012
Group=MISRAC2012-Rule-6
CheckSynopsis="(Required) A bit field shall not be declared as a member of a union."
LongDesc="A bit field member in a union was found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-7.1
Package=MISRAC2012
Group=MISRAC2012-Rule-7
CheckSynopsis="(Required) Octal constants shall not be used."
LongDesc="Octal integer constants are used."
Severity=Low
IdenticalTo=MISRAC2004-7.1 MISRAC++2008-2-13-2 MISRAC++2023-5.13.3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-7.2
Package=MISRAC2012
Group=MISRAC2012-Rule-7
CheckSynopsis="(Required) A "u" or "U" suffix shall be applied to all integer constants that are represented in an unsigned type."
LongDesc="There are unsigned integer constants without a U suffix."
Severity=Low
IdenticalTo=MISRAC2004-10.6 MISRAC++2008-2-13-3 MISRAC++2023-5.13.4
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-7.3
Package=MISRAC2012
Group=MISRAC2012-Rule-7
CheckSynopsis="(Required) The lowercase character "l" shall not be used in a literal suffix."
LongDesc="The lower case character l was found used as a suffix on numeric constants."
Severity=Low
IdenticalTo=MISRAC++2023-5.13.5
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-7.4_a
Package=MISRAC2012
Group=MISRAC2012-Rule-7
CheckSynopsis="(Required) A string literal shall not be assigned to an object unless the object's type is "pointer to const-qualified char"."
LongDesc="A string literal was found assigned to a variable that is not declared as constant."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-7.4_b
Package=MISRAC2012
Group=MISRAC2012-Rule-7
CheckSynopsis="(Required) A string literal shall not be assigned to an object unless the object's type is "pointer to const-qualified char"."
LongDesc="Part of a string literal was found that is modified via the array subscript operator []."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-7.5
Package=MISRAC2012
Group=MISRAC2012-Rule-7
CheckSynopsis="(Mandatory) The argument of an integer constant macro shall have an appropriate form."
LongDesc="Integer macro with inappropriate form found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-7.6
Package=MISRAC2012
Group=MISRAC2012-Rule-7
CheckSynopsis="(Required) The small integer variants of the minimum-width integer constant macros shall not be used."
LongDesc="Small integer constant macro found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.1
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) Types shall be explicitly specified."
LongDesc="An object or function of the type int is declared or defined, but its type is not explicitly stated."
Severity=Medium
IdenticalTo=DECL-implicit-int MISRAC2004-8.2
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.2_a
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) Function types shall be in prototype form with named parameters."
LongDesc="There are functions declared with an empty () parameter list that does not form a valid prototype."
Severity=Medium
IdenticalTo=FUNC-unprototyped-all MISRAC2004-16.5
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.2_b
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) Function types shall be in prototype form with named parameters."
LongDesc="Function prototypes were found with unnamed parameters."
Severity=Low
IdenticalTo=MISRAC2004-16.3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.3
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) All declarations of an object or function shall use the same names and type qualifiers."
LongDesc="Multiple declarations of an object or function were found that use different names and type qualifiers."
Severity=Low
IdenticalTo=CERT-DCL40-C
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.4
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) A compatible declaration shall be visible when an object or function with external linkage is defined."
LongDesc="An extern definition is missing a compatible declaration."
Severity=Low
IdenticalTo=MISRAC++2008-3-2-1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.5_a
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) An external object or function shall be declared once in one and only one file."
LongDesc="Multiple declarations of the same external object or function were found."
Severity=Low
IdenticalTo=MISRAC2004-8.8_a MISRAC++2008-3-2-3_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.5_b
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) An external object or function shall be declared once in one and only one file."
LongDesc="Multiple declarations of the same external object or function were found."
Severity=Low
IdenticalTo=MISRAC2004-8.8_b MISRAC++2008-3-2-3_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.6
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) An identifier with external linkage shall have exactly one external definition."
LongDesc="Multiple definitions or no definition were found for an external object or function."
Severity=Low
IdenticalTo=MISRAC2004-8.9 MISRAC++2008-3-2-4 MISRAC++2023-6.2.3_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.7
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Advisory) Functions and objects should not be defined with external linkage if they are referenced in only one translation unit."
LongDesc="An externally linked object or function was found referenced in only one translation unit."
Severity=Low
IdenticalTo=MISRAC2004-8.10
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-8.8
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage."
LongDesc="A missing static storage class specifier was found."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Rule-8.9_a
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Advisory) An object should be defined at block scope if its identifier only appears in a single function."
LongDesc="A global object was found that is only referenced from a single function."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-8.9_b
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Advisory) An object should be defined at block scope if its identifier only appears in a single function."
LongDesc="A global object was found that is only referenced from a single function."
Severity=Low
IdenticalTo=MISRAC2004-8.7
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-8.10
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) An inline function shall be declared with the static storage class."
LongDesc="Inline functions were found that are not declared as static."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.11
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Advisory) When an array with external linkage is declared, its size should be explicitly specified."
LongDesc="One or more external arrays are declared without their size being stated explicitly or defined implicitly by initialization."
Severity=Low
IdenticalTo=MISRAC2004-8.12 MISRAC++2008-3-1-3 MISRAC++2023-6.0.2
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-8.12
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) The value of an implicitly-specified enumeration constant shall be unique."
LongDesc="A duplicated implicit enumeration constant was found."
Severity=Medium
IdenticalTo=MISRAC++2023-11.6.3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.13
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Advisory) A pointer should be const-qualified whenever possible."
LongDesc="A pointer was found that is not const-qualified."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-8.14
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) The restrict type qualifier shall not be used."
LongDesc="The restrict type qualifier was found used in function parameters."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.15
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Required) All declarations of an object with an explicit alignment specification
shall specify the same alignment."
LongDesc="Found different explicit alignment specification."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-8.16
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Advisory) The alignment specification of zero should not appear in an object declaration."
LongDesc="Found alignment specification of zero."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-8.17
Package=MISRAC2012
Group=MISRAC2012-Rule-8
CheckSynopsis="(Advisory) At most one explicit alignment specifier should appear in an object declaration."
LongDesc="Found multiple alignment specifications."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-9.1_a
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Mandatory) The value of an object with automatic storage duration shall not be read before it has been set."
LongDesc="A possible dereference of an uninitialized or NULL pointer was found."
Severity=Low
IdenticalTo=PTR-uninit-pos CERT-EXP33-C_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.1_b
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Mandatory) The value of an object with automatic storage duration shall not be read before it has been set."
LongDesc="Read accesses from local buffers were found that are not preceded by writes."
Severity=High
IdenticalTo=MISRAC2004-1.2_a SPC-uninit-arr-all CERT-EXP33-C_d
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.1_d
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Mandatory) The value of an object with automatic storage duration shall not be read before it has been set."
LongDesc="A field of a local struct is read before it is initialized."
Severity=High
IdenticalTo=MISRAC2004-1.2_b SPC-uninit-struct-field CERT-EXP33-C_e
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.1_e
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Mandatory) The value of an object with automatic storage duration shall not be read before it has been set."
LongDesc="On all execution paths, there is a variable that is read before it is assigned a value."
Severity=High
IdenticalTo=SPC-uninit-var-all MISRAC2004-9.1_a MISRAC++2008-8-5-1_a MISRAC2012-Rule-1.3_j
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.2
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Required) The initializer for an aggregate or union shall be enclosed in braces."
LongDesc="An initializer for an aggregate or union was found that is not enclosed in braces."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.3
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Required) Arrays shall not be partially initialized."
LongDesc="Arrays were found that are partially initialized."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.4
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Required) An element of an object shall not be initialized more than once."
LongDesc="An object field was found that is initialized more than once. The last initialization will overwrite previous value(s)."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.5_a
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Required) Where designated initializers are used to initialize an array object the size of the array shall be specified explicitly."
LongDesc="Arrays, initialized with designated initializers but with no fixed length, were found."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.5_b
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Required) Where designated initializers are used to initialize an array object the size of the array shall be specified explicitly."
LongDesc="A flexible array member was found that is initialized with a designated initializer."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.6
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Required) An initializer using chained designators shall not contain initializers without designators."
LongDesc="Chained designators initializer without designators."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-9.7
Package=MISRAC2012
Group=MISRAC2012-Rule-9
CheckSynopsis="(Mandatory) Atomic objects shall be appropriately initialized before being accessed."
LongDesc="Uninitalized Atomic object accessed."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.1_R1
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Operands shall not be of an inappropriate essential type."
LongDesc="An expression of essentially floating type point type is used on a non-compliant operand."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Rule-10.1_R2
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Operands shall not be of an inappropriate essential type."
LongDesc="An operand was found that is not of essentially Boolean type, despite being interpreted as a Boolean value."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.1_R3
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Operands shall not be of an inappropriate essential type."
LongDesc="An operand was found that is of essentially Boolean type, despite being interpreted as a numeric value."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.1_R4
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Operands shall not be of an inappropriate essential type."
LongDesc="An operand was found that is of essentially character type, despite being interpreted as a numeric value."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.1_R5
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Operands shall not be of an inappropriate essential type."
LongDesc="An operand that is of essentially enum type is used in an arithmetic operation, because an enum object uses an implementation-defined integer type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.1_R6
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Operands shall not be of an inappropriate essential type."
LongDesc="Shift and bitwise operations were found performed on operands of essentially signed type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.1_R7
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Operands shall not be of an inappropriate essential type. The right-hand operand of a shift operator is not of essentially unsigned type, meaning that undefined behavior might result from a negative shift."
LongDesc="The right-hand operand of a shift operator is not of essentially unsigned type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.1_R8
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Operands shall not be of an inappropriate essential type. An operand of essentially unsigned typed is used as the operand to the unary minus operator. This is problematic because the signedness of the result is determined by the implementation-defined size of int."
LongDesc="An operand of essentially unsigned typed is used as the operand to the unary minus operator."
Severity=Medium
IdenticalTo=MISRAC++2008-5-3-2 MISRAC2004-12.9 MISRAC++2023-8.3.1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.1_R10
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) The inherent nature of floating-point types is such that comparisons of equality will often not
    evaluate to true even when they are expected to."
LongDesc="An operand of essentially floating type is used as the operand to equal or not equal operator."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.2
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Expressions of essentially character type shall not be used inappropriately in addition and subtraction operations."
LongDesc="Expressions of essentially character type were found used inappropriately in addition and subtraction operations."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.3
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) The value of an expression shall not be assigned to an object with a narrower essential type or of a different essential type category"
LongDesc="The value of an expression was found assigned to an object with a narrower essential type or a different essential type category."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.4_a
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) Both operands of an operator in which the usual arithmetic conversions are performed shall have the same essential type category."
LongDesc="Operands of an operator in which the usual arithmetic conversions are performed were found, that do not have the same essential type category."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.4_b
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) The second and third operands of the ternary operator shall have the same essential type category."
LongDesc="The second and third operands of the ternary operator do not have the same essential type category."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.5
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Advisory) The value of an expression should not be cast to an inappropriate essential type."
LongDesc="A value of an expression was found that is cast to an inappropriate essential type."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-10.6
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) The value of a composite expression shall not be assigned to an object with wider essential type"
LongDesc="The value of a composite expression is assigned to an object with wider essential type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.7
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) If a composite expression is used as one operand of an operator in which the usual arithmetic conversions are performed then the other operand shall not have wider essential type"
LongDesc="An operator in which the usual arithmetic conversions are performed was found, where a composite expression is used as one of the operands, but the other operand is of wider essential type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-10.8
Package=MISRAC2012
Group=MISRAC2012-Rule-10
CheckSynopsis="(Required) The value of a composite expression shall not be cast to a different essential type category or a wider essential type"
LongDesc="A composite expression was found whose value is cast to a different essential type category or a wider essential type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-11.1
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Required) Conversions shall not be performed between a pointer to a function and any other type"
LongDesc="Conversion between a pointer to a function and another type were found."
Severity=Medium
IdenticalTo=CERT-EXP39-C_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-11.2
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Required) Conversions shall not be performed between a pointer to an incomplete type and any other types."
LongDesc="A conversion from or to an incomplete type pointer was found."
Severity=Medium
IdenticalTo=CERT-EXP39-C_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-11.3
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Required) A cast shall not be performed between a pointer to object type and a pointer to a different object type A pointer to object type is cast to a pointer to a different object type. Conversions of this type might be invalid if the new pointer type requires a stricter alignment."
LongDesc="A pointer to object type is cast to a pointer to a different object type."
Severity=Low
IdenticalTo=CERT-EXP39-C_d
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-11.4
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Advisory) A conversion should not be performed between a pointer to object and an integer type"
LongDesc="A cast between a pointer type and an integral type was found."
Severity=Low
IdenticalTo=MISRAC2004-11.3 MISRAC++2008-5-2-9 MISRAC++2023-8.2.7
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-11.5
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Advisory) A conversion should not be performed from pointer to void into pointer to object."
LongDesc="A conversion from a pointer to void into a pointer to object was found."
Severity=Medium
IdenticalTo=CERT-EXP36-C_b
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-11.6
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Required) A cast shall not be performed between pointer to void and an arithmetic type."
LongDesc="A conversion between a pointer to void and an arithmetic type was found."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-11.7
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Required) A cast shall not be performed between pointer to object and a non-integer arithmetic type"
LongDesc="A cast between a pointer to object and a non-integer arithmetic type was found."
Severity=Low
IdenticalTo=CERT-EXP39-C_e
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-11.8
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Required) A cast shall not remove any const or volatile qualification from the type pointed to by a pointer A cast that removes a const or volatile qualification was found. This violates the principle of type qualification. Changes to the qualification of the pointer during the cast were not checked for."
LongDesc="A cast that removes a const or volatile qualification was found."
Severity=Low
IdenticalTo=MISRAC2004-11.5 MISRAC++2008-5-2-5 MISRAC++2023-8.2.3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-11.9
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Required) The macro NULL shall be the only permitted form of integer null pointer constant"
LongDesc="An integer constant was found where the NULL macro should be."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-11.10
Package=MISRAC2012
Group=MISRAC2012-Rule-11
CheckSynopsis="(Required) The _Atomic qualifier shall not be applied to the incomplete type void"
LongDesc="_Atomic qualifier applied to void"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-12.1
Package=MISRAC2012
Group=MISRAC2012-Rule-12
CheckSynopsis="(Advisory) The precedence of operators within expressions should be made explicit"
LongDesc="Implicit operator precedence was detected, without parenthesis to make it explicit."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-2 MISRAC++2023-8.0.1 MISRAC2012-Rule-12.1 MISRAC2004-12.1
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-12.2
Package=MISRAC2012
Group=MISRAC2012-Rule-12
CheckSynopsis="(Required) The right hand operand of a shift operator shall lie in the range zero to one less than the width in bits of the essential type of the left hand operand"
LongDesc="Out of range shifts were found"
Severity=Medium
IdenticalTo=ATH-shift-bounds MISRAC2004-12.8 MISRAC++2008-5-8-1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-12.3
Package=MISRAC2012
Group=MISRAC2012-Rule-12
CheckSynopsis="(Advisory) The comma operator should not be used"
LongDesc="There are uses of the comma operator."
Severity=Low
IdenticalTo=MISRAC2004-12.10 MISRAC++2008-5-18-1 MISRAC++2023-8.19.1
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-12.4
Package=MISRAC2012
Group=MISRAC2012-Rule-12
CheckSynopsis="(Advisory) Evaluation of constant expressions should not lead to unsigned integer wrap-around"
LongDesc="Evaluation of constant expressions lead to unsigned integer wraparound."
Severity=Low
IdenticalTo=EXPR-const-overflow MISRAC++2008-5-19-1 MISRAC2004-12.11 MISRAC++2023-8.20.1
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-12.5
Package=MISRAC2012
Group=MISRAC2012-Rule-12
CheckSynopsis="(Mandatory) The sizeof operator shall not have an operand which is a function parameter declared as 'array of type'."
LongDesc="A parameter declared as 'array of type' is used as operand to the sizeof operator."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-12.6
Package=MISRAC2012
Group=MISRAC2012-Rule-12
CheckSynopsis="(Required) Structure and union members of atomic objects shall not be directly accessed"
LongDesc="Member of atomic object directly accessed."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-13.1
Package=MISRAC2012
Group=MISRAC2012-Rule-13
CheckSynopsis="(Required) Initializer lists shall not contain persistent side effects"
LongDesc="The initalization list of an array contains side effects."
Severity=Medium
IdenticalTo=SPC-init-list
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-13.2_a
Package=MISRAC2012
Group=MISRAC2012-Rule-13
CheckSynopsis="(Required) The value of an expression and its persistent side effects shall be the same under all permitted evaluation orders"
LongDesc="Expressions that depend on order of evaluation were found."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-1_a MISRAC2004-12.2_a MISRAC2012-Rule-1.3_i SPC-order CERT-EXP30-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-13.2_b
Package=MISRAC2012
Group=MISRAC2012-Rule-13
CheckSynopsis="(Required) The value of an expression and its persistent side effects shall be the same under all permitted evaluation orders"
LongDesc="There are multiple read accesses with volatile-qualified type within one and the same sequence point."
Severity=Medium
IdenticalTo=SPC-volatile-reads MISRAC2004-12.2_b MISRAC++2008-5-0-1_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-13.2_c
Package=MISRAC2012
Group=MISRAC2012-Rule-13
CheckSynopsis="(Required) The value of an expression and its persistent side effects shall be the same under all permitted evaluation orders"
LongDesc="There are multiple write accesses with volatile-qualified type within one and the same sequence point."
Severity=Medium
IdenticalTo=SPC-volatile-writes MISRAC2004-12.2_c MISRAC++2008-5-0-1_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-13.3
Package=MISRAC2012
Group=MISRAC2012-Rule-13
CheckSynopsis="(Advisory) A full expression containing an increment (++) or decrement (--) operator should have no other potential side effects other than that caused by the increment or decrement operator"
LongDesc="The increment (++) and decrement (--) operators are being used mixed with other operators in an expression."
Severity=Low
IdenticalTo=MISRAC2004-12.13 MISRAC++2008-5-2-10
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-13.4_a
Package=MISRAC2012
Group=MISRAC2012-Rule-13
CheckSynopsis="(Advisory) The result of an assignment operator should not be used"
LongDesc="An assignment might be mistakenly used as the condition for an if, for, while, or do statement."
Severity=Low
IdenticalTo=EXP-cond-assign
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-13.4_b
Package=MISRAC2012
Group=MISRAC2012-Rule-13
CheckSynopsis="(Advisory) The result of an assignment operator should not be used"
LongDesc="Assignments were found in a sub-expression."
Severity=Low
IdenticalTo=MISRAC++2008-6-2-1 MISRAC++2023-8.18.2
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-13.5
Package=MISRAC2012
Group=MISRAC2012-Rule-13
CheckSynopsis="(Required) The right hand operand of a logical && or || operator shall not contain persistent side effects"
LongDesc="There are right-hand operands of && or || operators that contain side effects."
Severity=Medium
IdenticalTo=MISRAC2004-12.4 MISRAC++2008-5-14-1 MISRAC++2023-8.14.1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-13.6
Package=MISRAC2012
Group=MISRAC2012-Rule-13
CheckSynopsis="(Required) The operand of the sizeof operator shall not contain any expression which has potential side effects"
LongDesc="The operand of the sizeof operator contains an expression that has potential side effects."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-14.1_a
Package=MISRAC2012
Group=MISRAC2012-Rule-14
CheckSynopsis="(Required) A loop counter shall not have essentially floating type."
LongDesc="A loop counter were found having floating type."
Severity=Low
IdenticalTo=MISRAC++2008-6-5-1_a CERT-FLP30-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-14.1_b
Package=MISRAC2012
Group=MISRAC2012-Rule-14
CheckSynopsis="(Required) A loop counter shall not have essentially floating type"
LongDesc="A variable of essentially float type that is used in the loop condition, is then modified in the loop body."
Severity=Medium
IdenticalTo=CERT-FLP30-C_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-14.2
Package=MISRAC2012
Group=MISRAC2012-Rule-14
CheckSynopsis="(Required) A for loop shall be well-formed."
LongDesc="A malformed for loop was found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-14.3_a
Package=MISRAC2012
Group=MISRAC2012-Rule-14
CheckSynopsis="(Required) Controlling expressions shall not be invariant"
LongDesc="The condition in an if, for, while, do-while, or ternary operator will always be true."
Severity=Medium
IdenticalTo=RED-cond-always MISRAC++2008-0-1-2_a MISRAC++2023-0.0.2_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-14.3_b
Package=MISRAC2012
Group=MISRAC2012-Rule-14
CheckSynopsis="(Required) Controlling expressions shall not be invariant"
LongDesc="The condition in if, for, while, do-while, or ternary operator will never be true."
Severity=Medium
IdenticalTo=RED-cond-never MISRAC++2008-0-1-2_b MISRAC++2023-0.0.2_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-14.4_a
Package=MISRAC2012
Group=MISRAC2012-Rule-14
CheckSynopsis="(Required) The controlling expression of an if statement and the controlling expression of an iteration-statement shall have essentially Boolean type"
LongDesc="Non-Boolean termination conditions were found in do ... while statements."
Severity=Low
IdenticalTo=MISRAC2004-13.2_a MISRAC++2008-5-0-13_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-14.4_b
Package=MISRAC2012
Group=MISRAC2012-Rule-14
CheckSynopsis="(Required) The controlling expression of an if statement and the controlling expression of an iteration-statement shall have essentially Boolean type"
LongDesc="Non-Boolean termination conditions were found in for loops."
Severity=Medium
IdenticalTo=MISRAC2004-13.2_b MISRAC++2008-5-0-13_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-14.4_c
Package=MISRAC2012
Group=MISRAC2012-Rule-14
CheckSynopsis="(Required) The controlling expression of an if statement and the controlling expression of an iteration-statement shall have essentially Boolean type"
LongDesc="Non-Boolean conditions were found in if statements."
Severity=Low
IdenticalTo=MISRAC2004-13.2_c MISRAC++2008-5-0-13_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-14.4_d
Package=MISRAC2012
Group=MISRAC2012-Rule-14
CheckSynopsis="(Required) The controlling expression of an if statement and the controlling expression of an iteration-statement shall have essentially Boolean type"
LongDesc="Non-Boolean termination conditions were found in while statements."
Severity=Low
IdenticalTo=MISRAC2004-13.2_d MISRAC++2008-5-0-13_d
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-15.1
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Advisory) The goto statement should not be used"
LongDesc="Uses of the goto statement were found."
Severity=Low
IdenticalTo=MISRAC2004-14.4 MISRAC++2023-9.6.1
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-15.2
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Required) The goto statement shall jump to a label declared later in the same function"
LongDesc="A goto statement is declared after the destination label."
Severity=Low
IdenticalTo=MISRAC++2008-6-6-2 MISRAC++2023-9.6.3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-15.3
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Required) Any label referenced by a goto statement shall be declared in the same block, or in any block enclosing the goto statement"
LongDesc="The destination of a goto statement is a nested code block."
Severity=Low
IdenticalTo=MISRAC++2008-6-6-1 MISRAC++2023-9.6.2
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-15.4
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Advisory) There should be no more than one break or goto statement used to terminate any iteration statement"
LongDesc="One or more iteration statements are terminated by more than one break or goto statements."
Severity=Low
IdenticalTo=MISRAC++2008-6-6-4
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-15.5
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Advisory) A function should have a single point of exit at the end"
LongDesc="One or more functions have multiple exit points or an exit point that is not at the end of the function."
Severity=Low
IdenticalTo=MISRAC2004-14.7 MISRAC++2008-6-6-5
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-15.6_a
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be acompound-statement"
LongDesc="There are missing braces in do ... while statements."
Severity=Low
IdenticalTo=MISRAC2004-14.8_a MISRAC++2008-6-3-1_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-15.6_b
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be acompound-statement"
LongDesc="There are missing braces in for statements."
Severity=Low
IdenticalTo=MISRAC2004-14.8_b MISRAC++2008-6-3-1_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-15.6_c
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be acompound-statement"
LongDesc="There are missing braces in if, else, or else if statements."
Severity=Low
IdenticalTo=MISRAC2004-14.9 MISRAC++2008-6-4-1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-15.6_d
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be acompound-statement"
LongDesc="There are missing braces in switch statements."
Severity=Low
IdenticalTo=MISRAC2004-14.8_c MISRAC++2008-6-3-1_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-15.6_e
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be acompound-statement"
LongDesc="There are missing braces in while statements."
Severity=Low
IdenticalTo=MISRAC2004-14.8_d MISRAC++2008-6-3-1_d
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-15.7
Package=MISRAC2012
Group=MISRAC2012-Rule-15
CheckSynopsis="(Required) All if ... else if constructs shall be terminated with an else clause containing either a side effect or a comment"
LongDesc="If ... else if constructs that are not terminated with an else clause were detected."
Severity=Low
IdenticalTo=MISRAC2004-14.10 MISRAC++2008-6-4-2 MISRAC++2023-9.4.1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-16.1
Package=MISRAC2012
Group=MISRAC2012-Rule-16
CheckSynopsis="(Required) All switch statements shall be well-formed"
LongDesc="Detected switch statements that do not conform to the MISRA C switch syntax."
Severity=Low
IdenticalTo=MISRAC2004-15.0
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-16.2
Package=MISRAC2012
Group=MISRAC2012-Rule-16
CheckSynopsis="(Required) A switch label shall only be used when the most closely-enclosing compound statement is the body of a switch statement"
LongDesc="Switch labels were found in nested blocks."
Severity=Low
IdenticalTo=MISRAC2004-15.1 MISRAC++2008-6-4-4 MISRAC++2023-9.4.2_f
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-16.3
Package=MISRAC2012
Group=MISRAC2012-Rule-16
CheckSynopsis="(Required) An unconditional break statement shall terminate every switch-clause"
LongDesc="Non-empty switch cases were found that are not terminated by a break."
Severity=Medium
IdenticalTo=MISRAC2004-15.2 MISRAC++2008-6-4-5 MISRAC++2023-9.4.2_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-16.4
Package=MISRAC2012
Group=MISRAC2012-Rule-16
CheckSynopsis="(Required) Every switch statement shall have a default label"
LongDesc="Switch statements without a default clause were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-16.5
Package=MISRAC2012
Group=MISRAC2012-Rule-16
CheckSynopsis="(Required) A default label shall appear as either the first or the last switch label of a switch statement"
LongDesc="A switch was found whose default label is neither the first nor the last label of the switch."
Severity=Medium
IdenticalTo=MISRAC++2023-9.4.2_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-16.6
Package=MISRAC2012
Group=MISRAC2012-Rule-16
CheckSynopsis="(Required) Every switch statement shall have at least two switch-clauses"
LongDesc="Switch statements without case clauses were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-16.7
Package=MISRAC2012
Group=MISRAC2012-Rule-16
CheckSynopsis="(Required) A switch-expression shall not have essentially Boolean type"
LongDesc="A switch expression was found that represents a value that is effectively Boolean."
Severity=Low
IdenticalTo=MISRAC2004-15.4 MISRAC++2008-6-4-7
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-17.1
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Required) The features of <stdarg.h> shall not be used"
LongDesc="Inclusion of the stdarg header file was detected."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-17.2_a
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Required) Functions shall not call themselves, either directly or indirectly"
LongDesc="There are functions that call themselves directly."
Severity=Low
IdenticalTo=MISRAC2004-16.2_a MISRAC++2008-7-5-4_a MISRAC++2023-8.2.10_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-17.2_b
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Required) Functions shall not call themselves, either directly or indirectly"
LongDesc="There are functions that call themselves indirectly."
Severity=Low
IdenticalTo=MISRAC2004-16.2_b MISRAC++2008-7-5-4_b MISRAC++2023-8.2.10_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-17.3
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Mandatory) A function shall not be declared implicitly"
LongDesc="Functions are used without prototyping."
Severity=Medium
IdenticalTo=FUNC-implicit-decl MISRAC2004-8.1 CERT-DCL31-C
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-17.4
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Mandatory) All exit paths from a function with non-void return type shall have an explicit return statement with an expression"
LongDesc="For some execution paths, no return statement is executed in a function with a non-void return type."
Severity=Medium
IdenticalTo=SPC-return MISRAC2004-16.8 MISRAC++2008-8-4-3 MISRAC++2023-9.6.5
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-17.5
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Required) The function argument corresponding to a parameter declared to have an array type shall have an appropriate number of elements."
LongDesc="A function call is made with the wrong array type argument."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-17.6
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Mandatory) The declaration of an array parameter shall not contain the static keyword between the [ ]"
LongDesc="There are array parameters with the static keyword between the []."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-17.7
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Required) The value returned by a function having non-void return type shall be used"
LongDesc="There are unused function return values (other than overloaded operators)."
Severity=Low
IdenticalTo=RED-unused-return-val MISRAC++2008-0-1-7 MISRAC++2023-0.1.2
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-17.8
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Advisory) A function parameter should not be modified."
LongDesc="A function parameter was found that is modified."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-17.9
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Mandatory) A function declared with a _Noreturn function specifier shall not return
to its caller."
LongDesc="A function with a _Noreturn function specifier returns."
Severity=Low
IdenticalTo=MISRAC++2023-9.6.4
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-17.10
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Required) A function declared with a _Noreturn function specifier shall have void
return type."
LongDesc="A function with a _Noreturn function specifier has non void return type."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-17.11
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Advisory) A function that never returns should be declared with 
  a _Noreturn function specifier."
LongDesc="Found a function expected to have _Noreturn function specifier."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-17.12
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Advisory) A function identifier should only be used with either a preceding &, or
with a parenthesized parameter list."
LongDesc="A function identifier was found that is not preceded by & and has no parenthesized parameter list."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-17.13
Package=MISRAC2012
Group=MISRAC2012-Rule-17
CheckSynopsis="(Required) A function type shall not be type qualified."
LongDesc="Found a type qualified function type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.1_a
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand"
LongDesc="An array access is out of bounds."
Severity=High
IdenticalTo=ARR-inv-index MISRAC++2008-5-0-16_c CERT-ARR30-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.1_b
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand"
LongDesc="An array access might be out of bounds, depending on which path is executed."
Severity=High
IdenticalTo=ARR-inv-index-pos MISRAC++2008-5-0-16_d CERT-ARR30-C_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.1_c
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand"
LongDesc="A pointer to an array is used outside the array bounds."
Severity=High
IdenticalTo=ARR-inv-index-ptr MISRAC++2008-5-0-16_e CERT-ARR30-C_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.1_d
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand"
LongDesc="A pointer to an array is potentially used outside the array bounds."
Severity=Medium
IdenticalTo=ARR-inv-index-ptr-pos MISRAC++2008-5-0-16_f CERT-ARR30-C_d
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.2
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) Subtraction between pointers shall only be applied to pointers that address elements of the same array.  Note: This rule will only accept arrays of the form '<type> <name>[<size>]'."
LongDesc="A subtraction was found between pointers that address elements of different arrays."
Severity=Medium
IdenticalTo=MISRAC2004-17.2 CERT-ARR36-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.3
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) The relational operators >, >=, < and <= shall not be applied to objects of pointer type except where they point into the same object."
LongDesc="A relational operator was found applied to an object of pointer type that does not point into the same object."
Severity=Medium
IdenticalTo=MISRAC2004-17.3 CERT-ARR36-C_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.4
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) The +, -, += and -= operators should not be applied to an expression of pointer type."
LongDesc="A +, -, +=, or -= operator was found applied to an expression of pointer type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.5
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Advisory) Declarations should contain no more than two levels of pointer nesting"
LongDesc="Declarations that contain more than two levels of pointer indirection have been found."
Severity=Low
IdenticalTo=MISRAC2004-17.5 MISRAC++2008-5-0-19 MISRAC++2023-11.3.2
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-18.6_a
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) The address of an object with automatic storage shall not be copied to another object that persists after the first object has ceased to exist"
LongDesc="Might return address on the stack."
Severity=High
IdenticalTo=MEM-stack MISRAC++2008-7-5-1_b MISRAC++2023-6.8.2_b MISRAC2004-17.6_a CERT-DCL30-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.6_b
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) The address of an object with automatic storage shall not be copied to another object that persists after the first object has ceased to exist"
LongDesc="A stack address is stored in a global pointer."
Severity=High
IdenticalTo=MEM-stack-global MISRAC++2008-7-5-2_a MISRAC++2023-6.8.3_a MISRAC2004-17.6_b CERT-DCL30-C_c
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.6_c
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) The address of an object with automatic storage shall not be copied to another object that persists after the first object has ceased to exist"
LongDesc="A stack address is stored in the field of a global struct."
Severity=High
IdenticalTo=MEM-stack-global-field MISRAC++2008-7-5-2_b MISRAC++2023-6.8.3_b MISRAC2004-17.6_c CERT-DCL30-C_d
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.6_d
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) The address of an object with automatic storage shall not be copied to another object that persists after the first object has ceased to exist"
LongDesc="A stack address is stored outside a function via a parameter."
Severity=High
IdenticalTo=MEM-stack-param MISRAC++2008-7-5-2_c MISRAC++2023-6.8.3_c MISRAC2004-17.6_d MISRAC2012-Rule-1.3_s CERT-DCL30-C_e
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.7
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) Flexible array members shall not be declared"
LongDesc="Flexible array members are declared."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.8
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) Variable-length array types shall not be used"
LongDesc="There are arrays declared with a variable length."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.9
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Required) An object with temporary lifetime shall not undergo array-to-pointer conversion"
LongDesc="Array-to-pointer conversion of an object with temporary lifetime."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-18.10
Package=MISRAC2012
Group=MISRAC2012-Rule-18
CheckSynopsis="(Mandatory) Pointers to variably-modified array types shall not be used"
LongDesc="Pointer to variably-modified array type used."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-19.1
Package=MISRAC2012
Group=MISRAC2012-Rule-19
CheckSynopsis="(Mandatory) An object shall not be assigned or copied to an overlapping object"
LongDesc="Assignments from one field of a union to another were found."
Severity=High
IdenticalTo=UNION-overlap-assign MISRAC2004-18.2 MISRAC++2008-0-2-1 MISRAC++2023-8.18.1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-19.2
Package=MISRAC2012
Group=MISRAC2012-Rule-19
CheckSynopsis="(Advisory) The union keyword should not be used"
LongDesc="Unions were found."
Severity=Low
IdenticalTo=MISRAC2004-18.4 MISRAC++2008-9-5-1 MISRAC++2023-12.3.1
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-20.1
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Advisory) #include directives should only be preceded by preprocessor directives or comments."
LongDesc="#include directives were found that are not first in the source file."
Severity=Low
IdenticalTo=MISRAC2004-19.1 MISRAC++2008-16-0-1 MISRAC++2023-19.0.3
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-20.2
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) The ',' or  characters and the /* or // character sequences shall not occur in a header file name"
LongDesc="Illegal characters were found in the names of header files."
Severity=Low
IdenticalTo=MISRAC2004-19.2
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-20.4_c89
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) A macro shall not be defined with the same name as a keyword"
LongDesc="A macro was found defined with the same name as a keyword."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-20.4_c99
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) A macro shall not be defined with the same name as a keyword"
LongDesc="A macro was found defined with the same name as a keyword."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-20.5
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Advisory) #undef should not be used"
LongDesc="Found occurrances of #undef."
Severity=Low
IdenticalTo=MISRAC2004-19.6 MISRAC++2008-16-0-3
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-20.6_a
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) Tokens that look like a preprocessing directive shall not occur within a macro argument."
LongDesc="A preprocessing directive was found within a macro argument."
Severity=High
IdenticalTo=CERT-PRE32-C_a MISRAC++2023-19.3.5_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-20.6_b
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) Tokens that look like a preprocessing directive shall not occur within a macro argument."
LongDesc="A preprocessing directive was found within a macro argument."
Severity=High
IdenticalTo=CERT-PRE32-C_b MISRAC++2023-19.3.5_b
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-20.7
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) The expansion of macro parameters shall be enclosed in parentheses."
LongDesc="An expansion of macro parameters was found that is not enclosed in parentheses."
Severity=High
IdenticalTo=MISRAC++2023-19.3.4
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-20.8
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) The controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1."
LongDesc="A preprocessing controlling expression was found that does not evaluate to 0 or 1."
Severity=Low
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Rule-20.9
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) All identifiers used in the controlling expression of #if or #elif preprocessing directives shall be #define'd before evaluation."
LongDesc="An undefined preprocessing identifier was found in the controlling expression of #if or #elif."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Rule-20.10
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Advisory) The # and ## preprocessor operators should not be used"
LongDesc="# and ## operators were found in macro definitions."
Severity=Low
IdenticalTo=MISRAC2004-19.13 MISRAC++2008-16-3-2 MISRAC++2023-19.3.1
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-20.11
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) A macro parameter immediately following a # operator shall not immediately be followed by a ## operator."
LongDesc="A macro parameter immediately following a # was found that is immediately followed by a ##."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Rule-20.12
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) A macro parameter used as an operand to the # or ## operators, which is itself subject to further macro replacement, shall only be used as an operand to these operators."
LongDesc="A macro parameter was found that is used both in raw text form and in expanded form."
Severity=High
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Rule-20.13
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) A line whose first token is # shall be a valid preprocessing directive."
LongDesc="A line was found whose first token is # but that is not a valid preprocessing directive."
Severity=Low
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Rule-20.14
Package=MISRAC2012
Group=MISRAC2012-Rule-20
CheckSynopsis="(Required) All #else, #elif, and #endif preprocessor directives shall reside in the same file as the #if, #ifdef, or #ifndef directive to which they are related."
LongDesc="Unbalanced #if/#endif preprocessor directives were found."
Severity=Medium
IdenticalTo=
Default=on
Visible=No

CheckName=MISRAC2012-Rule-21.1
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) #define and #undef shall not be used on a reserved identifier or reserved macro name"
LongDesc="Detected a #define or #undef of a reserved identifier in the standard library."
Severity=Low
IdenticalTo=MISRAC2004-20.1 MISRAC++2008-17-0-1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.2
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) A reserved identifier or macro name shall not be declared"
LongDesc="One or more library functions are being overridden."
Severity=Low
IdenticalTo=MISRAC++2008-17-0-3 MISRAC2004-20.2 CERT-DCL37-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.3
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The memory allocation and deallocation functions of <stdlib.h> shall not be used."
LongDesc="Uses of malloc, calloc, realloc, aligned_alloc, or free were found."
Severity=Low
IdenticalTo=MISRAC2004-20.4 MISRAC++2008-18-4-1 MISRAC++2023-21.6.1_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.4
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The standard header file setjmp.h shall not be used"
LongDesc="Found uses of setjmp.h."
Severity=Low
IdenticalTo=MISRAC2004-20.7 MISRAC++2008-17-0-5
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.5
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The standard header file signal.h shall not be used"
LongDesc="Uses of signal.h were found."
Severity=Low
IdenticalTo=MISRAC2004-20.8 MISRAC++2008-18-7-1 MISRAC++2023-21.10.3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.6
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The Standard Library input/output functions shall not be used"
LongDesc="Uses of stdio.h or wchar.h were found."
Severity=Low
IdenticalTo=MISRAC2004-20.9 MISRAC++2008-27-0-1 MISRAC++2023-30.0.1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.7
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The atof, atoi, atol and atoll functions of stdlib.h shall not be used"
LongDesc="Uses of atof, atoi, atol, and atoll were found."
Severity=Low
IdenticalTo=MISRAC2004-20.10 MISRAC++2008-18-0-2 MISRAC++2023-21.2.1
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.8
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The Standard Library termination functions of <stdlib.h> shall not be used."
LongDesc="Uses of abort, exit, getenv, and system were found."
Severity=Low
IdenticalTo=MISRAC2004-20.11 MISRAC++2008-18-0-3
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.9
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The library functions bsearch and qsort of stdlib.h shall not be used"
LongDesc="Uses of the library functions bsearch and qsort in stdlib.h were found."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.10
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The Standard Library time and date functions shall not be used"
LongDesc="Use of the following wcsftime and time.h functions was found: asctime, clock, ctime, difftime, gmtime, localtime, mktime, strftime and time."
Severity=Low
IdenticalTo=MISRAC2004-20.12 MISRAC++2008-18-0-4
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.11
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Advisory) The standard header file tgmath.h should not be used"
LongDesc="Use of the standard header file tgmath.h was found."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-21.12_a
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The exception-handling features of <fenv.h> should not be used."
LongDesc="The exception-handling features of <fenv.h> are used."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.12_b
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The exception handling features of <fenv.h> shall not be used."
LongDesc="Macros are used in <fenv.h>."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.12_c
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The standard header file <fenv.h> shall not be used."
LongDesc="The standard header file <fenv.h> is used."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.13
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) The relevant functions from <ctype.h> are defined  to take an int argument where the expected value is either in  the range of an unsigned char or is a negative value equivalent  to EOF. The use of any other values results in undefined  behaviour."
LongDesc="Any value passed to a function in <ctype.h> shall be  representable as an unsigned char or be the value EOF."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.14
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The Standard Library function memcmp shall not be  used to compare null terminated strings. If the length of  either of the two strings is less than n, then they may compare  as different even when they are logically the same."
LongDesc="The Standard Library function memcmp shall not be used to  compare null terminated strings."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.15
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The pointer arguments to the Standard Library functions memcpy, memmove and memcmp shall be pointers to qualified or unqualified versions of compatible types."
LongDesc="The pointer arguments to memcpy, memmove and memcmp have different types."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.16
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The pointer arguments to the Standard Library function memcmp shall point to either a pointer type, an essentially signed type, an essentially unsigned type, an essentially Boolean type or an essentially enum type"
LongDesc="The types of the pointer arguments to memcmp  are not essentially signed, unsigned, Boolean or enum type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.17_a
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) Use of the string handling functions from <string.h> shall not result in accesses beyond the bounds of the objects referenced by their pointer parameters."
LongDesc="A call to strlen might cause destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.17_b
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) Use of the string handling functions from <string.h> shall not result in accesses beyond the bounds of the objects referenced by their pointer parameters."
LongDesc="A call to strcat might cause destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.17_c
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) Use of the string handling functions from <string.h> shall not result in accesses beyond the bounds of the objects referenced by their pointer parameters."
LongDesc="A call to strcpy might cause destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.17_d
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) Use of the string handling functions from <string.h> shall not result in accesses beyond the bounds of the objects referenced by their pointer parameters."
LongDesc="A call to strncat might cause a destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.17_e
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) Use of the string handling functions from <string.h> shall not result in accesses beyond the bounds of the objects referenced by their pointer parameters."
LongDesc="A call to strncmp might cause a buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.17_f
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) Use of the string handling functions from <string.h> shall not result in accesses beyond the bounds of the objects referenced by their pointer parameters."
LongDesc="A call to strncpy might cause a destination buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.18_a
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) The size_t argument passed to any function in <string.h> shall have an appropriate value."
LongDesc="A call to a function in <string.h> causes a buffer overrun."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.18_b
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) The size_t argument passed to any function in <string.h> shall have an appropriate value"
LongDesc="A call to memchr causes a buffer overrun."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.19_a
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) The pointers returned by the Standard Library functions localeconv, getenv,  setlocale or, strerror shall only be used as if they have pointer to  const-qualified type."
LongDesc="The pointer returned by localeconv, getenv, setlocale or, strerror is assigned to a non-const type."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.19_b
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) The pointers returned by the Standard Library functions localeconv, getenv,  setlocale or, strerror shall only be used as if they have pointer to  const-qualified type."
LongDesc="The pointer returned by localeconv, getenv, setlocale or, strerror is assigned to a non-const type."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.20
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) The pointer returned by the Standard Library  functions asctime, ctime, gmtime, localtime, localeconv, getenv,  setlocale or strerror shall not be used following a subsequent  call to the same function."
LongDesc="A pointer returned by asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale or strerror is used after following a subsequent call to the same function."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.21
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The Standard Library function system of <stdlib.h> shall not be used."
LongDesc="Uses of system were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.22
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Mandatory) All operand arguments to any type-generic macros declared in
<tgmath.h> shall have an appropriate essential type."
LongDesc="Uses of bad type argument to tgmath.h macro were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.23
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) All operand arguments to any multi-argument type-generic macros
declared in <tgmath.h> shall have the same standard type."
LongDesc="Uses of differently typed arguments to tgmath.h macro were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.24
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) The random number generator functions of <stdlib.h> shall not be
used"
LongDesc="Uses of srand, rand were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-21.25
Package=MISRAC2012
Group=MISRAC2012-Rule-21
CheckSynopsis="(Required) All memory synchronization operations shall be executed in sequentially consistent order"
LongDesc="Use of other than memory_order_seq_cst parameter found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.1_a
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Required) All resources obtained dynamically by means of Standard Library functions shall be explicitly released"
LongDesc="A memory leak due to incorrect deallocation was detected."
Severity=High
IdenticalTo=MEM-leak SEC-BUFFER-memory-leak CERT-MEM31-C
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.1_b
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Required) All resources obtained dynamically by means of Standard Library functions shall be explicitly released"
LongDesc="A file pointer is never closed."
Severity=Medium
IdenticalTo=MISRAC2012-Dir-4.13_c RESOURCE-file-no-close-all SEC-FILEOP-open-no-close CERT-FIO42-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.2_a
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Mandatory) A block of memory shall only be freed if it was allocated by means of a Standard Library function"
LongDesc="A memory location is freed more than once."
Severity=High
IdenticalTo=MEM-double-free
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.2_b
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Mandatory) A block of memory shall only be freed if it was allocated by means of a Standard Library function"
LongDesc="Freeing a memory location more than once on some paths but not others."
Severity=Medium
IdenticalTo=MEM-double-free-some
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.2_c
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Mandatory) A block of memory shall only be freed if it was allocated by means of a Standard Library function"
LongDesc="A stack address might be freed."
Severity=High
IdenticalTo=MEM-free-variable CERT-MEM34-C_a
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.3
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Required) The same file shall not be open for read and write access at the same time on different streams."
LongDesc="A file was found that is open for read and write access at the same time on different streams."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.4
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Mandatory) There shall be no attempt to write to a stream which has been opened as read-only"
LongDesc="A file opened as read-only is written to."
Severity=Medium
IdenticalTo=RESOURCE-write-ronly-file
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.5_a
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Mandatory) A pointer to a FILE object shall not be dereferenced"
LongDesc="A pointer to a FILE object is dereferenced."
Severity=Low
IdenticalTo=RESOURCE-deref-file
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.5_b
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Mandatory) A pointer to a FILE object shall not be dereferenced"
LongDesc="A file pointer was found that is implicitly dereferenced by a library function."
Severity=Medium
IdenticalTo=RESOURCE-implicit-deref-file
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.6
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Mandatory) The value of a pointer to a FILE shall not be used after the associated stream has been closed"
LongDesc="A file pointer was found that is used after it has been closed."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.7_a
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Required) The macro EOF shall only be compared with the unmodified return value from any Standard Library function capable of returning EOF"
LongDesc="The macro EOF is compared with a value not originating from a function capable of returning EOF."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.7_b
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="The macro EOF shall only be compared with the unmodified return value from any Standard Library function capable of returning EOF"
LongDesc="The macro EOF is compared with a value not originating from a function capable of returning EOF."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.8
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Required) The value of errno shall be set to zero prior to a  call to an errno-setting-function."
LongDesc="errno is not set to zero prior a call to an errno-setting-function."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.9
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Required) The value of errno shall be tested against zero after calling an errno-setting-function."
LongDesc="errno is not tested against zero after a call to an errno-setting-function."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-22.10
Package=MISRAC2012
Group=MISRAC2012-Rule-22
CheckSynopsis="(Required) The value of errno shall only be tested when the  last function to be called was an errno-setting-function."
LongDesc="errno is tested after a call to function that is not an errno-setting-function."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-23.1
Package=MISRAC2012
Group=MISRAC2012-Rule-23
CheckSynopsis="(Advisory) A generic selection should only be expanded from a macro."
LongDesc="Found generic selection not in a macro."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-23.2
Package=MISRAC2012
Group=MISRAC2012-Rule-23
CheckSynopsis="(Required) A generic selection that is not expanded from a macro shall not
contain potential side effects in the controlling expression."
LongDesc="Found generic selection with potential side effects in controlling expression."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-23.3
Package=MISRAC2012
Group=MISRAC2012-Rule-23
CheckSynopsis="(Advisory) A generic selection should contain at least one non-default association."
LongDesc="Found generic selection without non default association."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-23.4
Package=MISRAC2012
Group=MISRAC2012-Rule-23
CheckSynopsis="(Advisory) A generic association shall list an appropriate type."
LongDesc="Found generic association with inappropriate type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-23.5
Package=MISRAC2012
Group=MISRAC2012-Rule-23
CheckSynopsis="(Advisory) A generic selection should not depend on implicit pointer type
conversion."
LongDesc="Found generic selection depending on implicit pointer type conversion."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-23.6
Package=MISRAC2012
Group=MISRAC2012-Rule-23
CheckSynopsis="(Required) The controlling expression of a generic selection shall have an
essential type that matches its standard type."
LongDesc="Found generic selection not using an essential type that matches its standard type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC2012-Rule-23.7
Package=MISRAC2012
Group=MISRAC2012-Rule-23
CheckSynopsis="(Advisory) A generic selection that is expanded from a macro should evaluate its
argument only once."
LongDesc="Found generic selection evaluating argument not exactly once."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC2012-Rule-23.8
Package=MISRAC2012
Group=MISRAC2012-Rule-23
CheckSynopsis="(Required) A default association shall appear as either the first or the last association of a generic selection."
LongDesc="Found generic selection with default association not first or last."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-1
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) A project shall not contain unreachable code."
LongDesc="A part of the application is never executed."
Severity=Low
IdenticalTo=RED-dead MISRAC2004-14.1 MISRAC++2008-0-1-9 MISRAC2012-Rule-2.1_b MISRAC++2023-0.0.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-2_a
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) A project shall not contain infeasible paths."
LongDesc="The condition in if, for, while, do-while statement sequences and the ternary operator is always met."
Severity=Medium
IdenticalTo=RED-cond-always MISRAC2012-Rule-14.3_a MISRAC++2023-0.0.2_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-2_b
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) A project shall not contain infeasible paths."
LongDesc="The condition in if, for, while, do-while statement sequences and the ternary operator will never be met."
Severity=Medium
IdenticalTo=RED-cond-never MISRAC2012-Rule-14.3_b MISRAC++2023-0.0.2_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-2_c
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) A project shall not contain infeasible paths."
LongDesc="A case statement within a switch statement is unreachable."
Severity=Low
IdenticalTo=RED-case-reach MISRAC2012-Rule-2.1_a MISRAC++2023-0.0.2_c
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-3
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) A project shall not contain unused variables."
LongDesc="A variable is never read or written during execution."
Severity=Low
IdenticalTo=RED-unused-var-all
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-4_a
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) A project shall not contain non-volatile POD variables having only one use."
LongDesc="A variable is only used once."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-4_b
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) A project shall not contain non-volatile POD variables having only one use."
LongDesc="A global variable is only used once."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-6
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) A project shall not contain instances of non-volatile variables being given values that are never subsequently used."
LongDesc="A variable is assigned a value that is never used."
Severity=Low
IdenticalTo=RED-unused-val MISRAC2012-Rule-2.2_c
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-7
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) The value returned by a function having a non-void return type that is not an overloaded operator shall always be used."
LongDesc="There are unused function return values (excluding overloaded operators)"
Severity=Low
IdenticalTo=RED-unused-return-val MISRAC2012-Rule-17.7 MISRAC++2023-0.1.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-8
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) All functions with void return type shall have external side effect(s)."
LongDesc="There are functions with no effect. A function with no return type and no side effects effectively does nothing."
Severity=Low
IdenticalTo=RED-func-no-effect
Default=off
Visible=Yes

CheckName=MISRAC++2008-0-1-9
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) There shall be no dead code."
LongDesc="A part of the application is never executed."
Severity=Low
IdenticalTo=RED-dead MISRAC2004-14.1 MISRAC++2008-0-1-1 MISRAC2012-Rule-2.1_b MISRAC++2023-0.0.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-11
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) There shall be no unused parameters (named or unnamed) in nonvirtual functions."
LongDesc="A function parameter is declared but not used."
Severity=Low
IdenticalTo=RED-unused-param MISRAC2012-Rule-2.7
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-12
Package=MISRAC++2008
Group=MISRAC++2008-0-1
CheckSynopsis="(Required) There shall be no unused parameters (named or unnamed) in the set of parameters for a virtual function and all the functions that override it."
LongDesc="A function parameter is declared but not used."
Severity=Low
IdenticalTo=MISRAC++2023-0.2.2_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-1-5
Package=MISRAC++2008
Group=MISRAC++2023-0.2
CheckSynopsis="(Required) A project shall not contain unused type declarations."
LongDesc="Found unused type"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2008-0-2-1
Package=MISRAC++2008
Group=MISRAC++2008-0-2
CheckSynopsis="(Required) An object shall not be assigned to an overlapping object."
LongDesc="There are assignments from one field of a union to another."
Severity=High
IdenticalTo=UNION-overlap-assign MISRAC2004-18.2 MISRAC2012-Rule-19.1 MISRAC++2023-8.18.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-0-3-2
Package=MISRAC++2008
Group=MISRAC++2008-0-3
CheckSynopsis="(Required) If a function generates error information, then that error information shall be tested."
LongDesc="The return value for a library function that might return an error value is not used."
Severity=Medium
IdenticalTo=LIB-return-error MISRAC2004-16.10
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-3-1
Package=MISRAC++2008
Group=MISRAC++2008-2-3
CheckSynopsis="(Required) Trigraphs shall not be used."
LongDesc="Trigraphs were found in string literals."
Severity=Low
IdenticalTo=STR-trigraph MISRAC2004-4.2 MISRAC2012-Rule-4.2 support for trigraphs is disabled
Default=on
Visible=No

CheckName=MISRAC++2008-2-7-1
Package=MISRAC++2008
Group=MISRAC++2008-2-7
CheckSynopsis="(Required) The character sequence /* shall not be used within a C-style comment."
LongDesc="Detected /* inside comments"
Severity=Low
IdenticalTo=COMMENT-nested MISRAC2004-2.3 MISRAC++2023-5.7.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-7-2
Package=MISRAC++2008
Group=MISRAC++2008-2-7
CheckSynopsis="(Required) Sections of code shall not be "commented out" using C-style comments."
LongDesc="Commented-out code has been detected. (To allow comments to contain pseudo-code or code samples, only comments that end in ;, {, or } characters are considered to be commented-out code.)"
Severity=Low
IdenticalTo=MISRAC++2023-5.7.2_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-7-3
Package=MISRAC++2008
Group=MISRAC++2008-2-7
CheckSynopsis="(Advisory) Sections of code should not be "commented out" using C++ comments."
LongDesc="Commented-out code has been detected. (To allow comments to contain pseudo-code or code samples, only comments that end in ';', '{', or '}' characters are considered to be commented-out code.)"
Severity=Low
IdenticalTo=MISRAC++2023-5.7.2_b
Default=off
Visible=Yes

CheckName=MISRAC++2008-2-10-1
Package=MISRAC++2008
Group=MISRAC++2008-2-10
CheckSynopsis="(Required) Different identifiers shall be typographically unambiguous."
LongDesc="Two identifiers have names that can be confused with each other."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-10-2
Package=MISRAC++2008
Group=MISRAC++2008-2-10
CheckSynopsis=" (Required) Identifiers declared in an inner scope shall not hide an identifier declared in an outer scope."
LongDesc="There are identifier names that are not distinct from other names in an outer scope."
Severity=Low
IdenticalTo=MISRAC++2023-6.4.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-10-3
Package=MISRAC++2008
Group=MISRAC++2008-2-10
CheckSynopsis="(Required) A typedef name (including qualification, if any) shall be a unique identifier."
LongDesc="A typedef with this name has already been declared."
Severity=Low
IdenticalTo=MISRAC2004-5.3 MISRAC2012-Rule-5.6
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-10-4
Package=MISRAC++2008
Group=MISRAC++2008-2-10
CheckSynopsis="(Required) A class, union or enum name (including qualification, if any) shall be a unique identifier."
LongDesc="A class, struct, union, or enum declaration clashes with a previous declaration."
Severity=Low
IdenticalTo=MISRAC2004-5.4 MISRAC2012-Rule-5.7
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-10-5
Package=MISRAC++2008
Group=MISRAC++2008-2-10
CheckSynopsis="(Advisory) The identifier name of a non-member object or function with static storage duration should not be reused."
LongDesc="An identifier is used that might clash with another static identifier."
Severity=Low
IdenticalTo=MISRAC2004-5.5
Default=off
Visible=Yes

CheckName=MISRAC++2008-2-10-6
Package=MISRAC++2008
Group=MISRAC++2008-2-10
CheckSynopsis="(Required) If an identifier refers to a type, it shall not also refer to an object or a function in the same scope."
LongDesc="There is a clash with type names."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-13-1
Package=MISRAC++2008
Group=MISRAC++2008-2-13
CheckSynopsis="(Required) Only those escape sequences that are defined in ISO/IEC 14882:2003 shall be used."
LongDesc="Bad escape sequence used."
Severity=Medium
IdenticalTo=MISRAC2004-4.1 MISRAC++2023-5.13.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-13-2
Package=MISRAC++2008
Group=MISRAC++2008-2-13
CheckSynopsis="(Required) Octal constants (other than zero) and octal escape sequences (other than 0) shall not be used."
LongDesc="Octal integer constants are used."
Severity=Low
IdenticalTo=MISRAC2004-7.1 MISRAC2012-Rule-7.1 MISRAC++2023-5.13.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-13-3
Package=MISRAC++2008
Group=MISRAC++2008-2-13
CheckSynopsis="(Required) A "U" suffix shall be applied to all octal or hexadecimal integer literals of unsigned type."
LongDesc="There are unsigned integer constants without a U suffix."
Severity=Low
IdenticalTo=MISRAC2004-10.6 MISRAC2012-Rule-7.2 MISRAC++2023-5.13.4
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-13-4_a
Package=MISRAC++2008
Group=MISRAC++2008-2-13
CheckSynopsis="(Required) Literal suffixes shall be upper case."
LongDesc="Suffixes on floating-point constants are lower case."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-13-4_b
Package=MISRAC++2008
Group=MISRAC++2008-2-13
CheckSynopsis="(Required) Literal suffixes shall be upper case."
LongDesc="Suffixes on integer constants are lower case."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-2-13-5
Package=MISRAC++2008
Group=MISRAC++2008-2-13
CheckSynopsis="(Required) Narrow and wide string literals shall not be concatenated."
LongDesc="String literals with different suffixes concatenated."
Severity=Medium
IdenticalTo=MISRAC++2023-5.13.7
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-1-1_a
Package=MISRAC++2008
Group=MISRAC++2008-3-1
CheckSynopsis="(Required) It shall be possible to include any header file in multiple translation units without violating the One Definition Rule."
LongDesc="Non-inline functions have been defined in header files."
Severity=Medium
IdenticalTo=MISRAC2004-8.5_a MISRAC++2023-6.2.4_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-1-1_b
Package=MISRAC++2008
Group=MISRAC++2008-3-1
CheckSynopsis="(Required) It shall be possible to include any header file in multiple translation units without violating the One Definition Rule."
LongDesc="Non-inline functions have been defined in header files."
Severity=Medium
IdenticalTo=MISRAC2004-8.5_b MISRAC++2023-6.2.4_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-1-2
Package=MISRAC++2008
Group=MISRAC++2008-3-1
CheckSynopsis="(Required) Functions shall not be declared at block scope."
LongDesc="A function declaration was found at block scope."
Severity=Medium
IdenticalTo=MISRAC2004-8.6 MISRAC++2023-6.0.1_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-1-3
Package=MISRAC++2008
Group=MISRAC++2008-3-1
CheckSynopsis="(Required) When an array is declared, its size shall either be stated explicitly or defined implicitly by initialization."
LongDesc="One or more external arrays are declared without their size being stated explicitly or defined implicitly by initialization."
Severity=Low
IdenticalTo=MISRAC2004-8.12 MISRAC2012-Rule-8.11 MISRAC++2023-6.0.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-3-1
Package=MISRAC++2008
Group=MISRAC++2008-3-1
CheckSynopsis="(Required) Objects or functions with external linkage shall be declared in a header file."
LongDesc="Externally linked objects shall be declared in a header file."
Severity=Low
IdenticalTo=MISRAC++2023-6.5.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-2-1
Package=MISRAC++2008
Group=MISRAC++2008-3-2
CheckSynopsis="(Required) All declarations of an object or function shall have compatible types."
LongDesc="An extern definition is missing a compatible declaration."
Severity=Low
IdenticalTo=MISRAC2012-Rule-8.4
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-2-2
Package=MISRAC++2008
Group=MISRAC++2008-3-2
CheckSynopsis="(Required) The One Definition Rule shall not be violated."
LongDesc="Found entity with multiple definitions."
Severity=Low
IdenticalTo=MISRAC++2023-6.2.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-2-3_a
Package=MISRAC++2008
Group=MISRAC++2008-3-2
CheckSynopsis="(Required) A type, object or function that is used in multiple translation units shall be declared in one and only one file."
LongDesc="Multiple declarations of the same external object or function were found."
Severity=Low
IdenticalTo=MISRAC2012-Rule-8.5_a MISRAC2004-8.8_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-2-3_b
Package=MISRAC++2008
Group=MISRAC++2008-3-2
CheckSynopsis="(Required) A type, object or function that is used in multiple translation units shall be declared in one and only one file."
LongDesc="Multiple declarations of the same external object or function were found."
Severity=Low
IdenticalTo=MISRAC2004-8.8_b MISRAC2012-Rule-8.5_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-2-4
Package=MISRAC++2008
Group=MISRAC++2008-3-2
CheckSynopsis="(Required) An identifier with external linkage shall have exactly one definition."
LongDesc="Found external identifier with multiple definitions."
Severity=Low
IdenticalTo=MISRAC2004-8.9 MISRAC2012-Rule-8.6 MISRAC++2023-6.2.3_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-3-9-2
Package=MISRAC++2008
Group=MISRAC++2008-3-9
CheckSynopsis="(Advisory) typedefs that indicate size and signedness should be used in place of the basic numerical types."
LongDesc="There are uses of the basic types char, int, short, long, double, and float without a typedef."
Severity=Low
IdenticalTo=MISRAC2004-6.3 MISRAC2012-Dir-4.6_a MISRAC++2023-6.9.2
Default=off
Visible=Yes

CheckName=MISRAC++2008-3-9-3
Package=MISRAC++2008
Group=MISRAC++2008-3-9
CheckSynopsis="(Required) The underlying bit representations of floating-point values shall not be used."
LongDesc="An expression provides access to the bit-representation of a floating-point variable."
Severity=Medium
IdenticalTo=MISRAC2004-12.12_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-4-5-1
Package=MISRAC++2008
Group=MISRAC++2008-4-5
CheckSynopsis="(Required) Expressions with type bool shall not be used as operands to built-in operators other than the assignment operator =, the logical operators &&, ||, !, the equality operators == and !=, the unary & operator, and the conditional operator."
LongDesc="Arithmetic operators are used on boolean operands."
Severity=Low
IdenticalTo=MISRAC2004-12.6_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-4-5-2
Package=MISRAC++2008
Group=MISRAC++2008-4-5
CheckSynopsis="(Required) Expressions with type enum shall not be used as operands to builtin operators other than the subscript operator [ ], the assignment operator =, the equality operators == and !=, the unary & operator, and the relational operators <, <=, >, >=."
LongDesc="Unsafe operators are used on variables of enumeration type."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-4-5-3
Package=MISRAC++2008
Group=MISRAC++2008-4-5
CheckSynopsis="(Required) Expressions with type (plain) char and wchar_t shall not be used as operands to built-in operators other than the assignment operator =, the equality operators == and !=, and the unary & operator."
LongDesc="Arithmetic is performed on objects of type plain char, without an explicit signed or unsigned qualifier."
Severity=Low
IdenticalTo=MISRAC2004-6.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-1_a
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) The value of an expression shall be the same under any order of evaluation that the standard permits."
LongDesc="There are expressions that depend on the order of evaluation."
Severity=Medium
IdenticalTo=MISRAC2004-12.2_a MISRAC2012-Rule-1.3_i MISRAC2012-Rule-13.2_a SPC-order CERT-EXP30-C_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-1_b
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) The value of an expression shall be the same under any order of evaluation that the standard permits."
LongDesc="There are more than one read access with volatile-qualified type within a single sequence point."
Severity=Medium
IdenticalTo=SPC-volatile-reads MISRAC2004-12.2_b MISRAC2012-Rule-13.2_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-1_c
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) The value of an expression shall be the same under any order of evaluation that the standard permits."
LongDesc="There are more than one modification access with volatile-qualified type within a single sequence point."
Severity=Medium
IdenticalTo=SPC-volatile-writes MISRAC2004-12.2_c MISRAC2012-Rule-13.2_c
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-2
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Advisory) Limited dependence should be placed on C++ operator precedence rules in expressions."
LongDesc="Parentheses to avoid implicit operator precedence are missing."
Severity=Medium
IdenticalTo=MISRAC2004-12.1 MISRAC++2023-8.0.1 MISRAC2012-Rule-12.1
Default=off
Visible=Yes

CheckName=MISRAC++2008-5-0-3
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) A cvalue expression shall not be implicitly converted to a different underlying type."
LongDesc="One or more cvalue expressions have been implicitly converted to a different underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-4
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) An implicit integral conversion shall not change the signedness of the underlying type."
LongDesc="One or more implicit integral conversions have been found that change the signedness of the underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-5
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) There shall be no implicit floating-integral conversions."
LongDesc="One or more implicit floating-integral conversions were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-6
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) An implicit integral or floating-point conversion shall not reduce the size of the underlying type."
LongDesc="One or more implicit integral or floating-point conversion were found that reduce the size of the underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-7
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) There shall be no explicit floating-integral conversions of a cvalue expression."
LongDesc="One or more explicit floating-integral conversions of a cvalue expression were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-8
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) An explicit integral or floating-point conversion shall not increase the size of the underlying type of a cvalue expression."
LongDesc="One or more explicit integral or floating-point conversions were found that increase the size of the underlying type of a cvalue expression."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-9
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) An explicit integral conversion shall not change the signedness of the underlying type of a cvalue expression."
LongDesc="One or more explicit integral conversions were found that change the signedness of the underlying type of a cvalue expression."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-10
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) If the bitwise operators ~ and << are applied to an operand with an underlying type of unsigned char or unsigned short, the result shall be immediately cast to the underlying type of the operand."
LongDesc="A bitwise operation on unsigned char or unsigned short was found, that was not immediately cast to this type to ensure consistent truncation."
Severity=Low
IdenticalTo=MISRAC2004-10.5
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-13_a
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) The condition of an if-statement and the condition of an iteration-statement shall have type bool."
LongDesc="Non-Boolean termination conditions were found in do ... while statements."
Severity=Low
IdenticalTo=MISRAC2004-13.2_a MISRAC2012-Rule-14.4_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-13_b
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) The condition of an if-statement and the condition of an iteration-statement shall have type bool."
LongDesc="Non-boolean termination conditions were found in for loops."
Severity=Medium
IdenticalTo=MISRAC2004-13.2_b MISRAC2012-Rule-14.4_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-13_c
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) The condition of an if-statement and the condition of an iteration-statement shall have type bool."
LongDesc="Non-boolean conditions were found in if statements."
Severity=Low
IdenticalTo=MISRAC2004-13.2_c MISRAC2012-Rule-14.4_c
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-13_d
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) The condition of an if-statement and the condition of an iteration-statement shall have type bool."
LongDesc="Non-boolean termination conditions were found in while statements."
Severity=Low
IdenticalTo=MISRAC2004-13.2_d MISRAC2012-Rule-14.4_d
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-14
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) The first operand of a conditional-operator shall have type bool."
LongDesc="Non-boolean operands to the conditional ( ? : ) operator were found."
Severity=Low
IdenticalTo=MISRAC2004-13.2_e
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-15_a
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) Array indexing shall be the only form of pointer arithmetic."
LongDesc="Pointer arithmetic that is not array indexing was found."
Severity=Low
IdenticalTo=MISRAC2004-17.4_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-15_b
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) Array indexing shall be the only form of pointer arithmetic."
LongDesc="Array indexing applied to objects not defined as an array type was found."
Severity=Low
IdenticalTo=MISRAC2004-17.4_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-16_a
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array."
LongDesc="Pointer arithmetic applied to a pointer that references a stack address was found."
Severity=Medium
IdenticalTo=PTR-arith-stack MISRAC2004-17.1_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-16_b
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array."
LongDesc="Invalid pointer arithmetic with an automatic variable that is neither an array nor a pointer was found."
Severity=Medium
IdenticalTo=PTR-arith-var MISRAC2004-17.1_c
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-16_c
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array."
LongDesc="An array access is out of bounds."
Severity=High
IdenticalTo=ARR-inv-index MISRAC2012-Rule-18.1_a CERT-ARR30-C_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-16_d
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array."
LongDesc="An array access might be out of bounds for some execution paths."
Severity=High
IdenticalTo=ARR-inv-index-pos MISRAC2012-Rule-18.1_b CERT-ARR30-C_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-16_e
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array."
LongDesc="A pointer to an array is used outside the array bounds."
Severity=High
IdenticalTo=ARR-inv-index-ptr MISRAC2012-Rule-18.1_c CERT-ARR30-C_c
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-16_f
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same array."
LongDesc="A pointer to an array might be used outside the array bounds."
Severity=Medium
IdenticalTo=ARR-inv-index-ptr-pos MISRAC2012-Rule-18.1_d CERT-ARR30-C_d
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-17
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) Subtraction between pointers shall only be applied to pointers that address elements of the same array."
LongDesc="Subtracting pointers of different arrays may lead to undefined behaviour."
Severity=High
IdenticalTo=MISRAC++2023-8.7.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-18
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) >, >=, <, <= shall not be applied to objects of pointer type, except where they point to the same array."
LongDesc="Comparing pointers cause undefined behaviour if they do not point to the same object."
Severity=High
IdenticalTo=MISRAC++2023-8.9.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-19
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) The declaration of objects shall contain no more than two levels of pointer indirection."
LongDesc="Declarations that contain more than two levels of pointer indirection have been found."
Severity=Low
IdenticalTo=MISRAC2004-17.5 MISRAC2012-Rule-18.5 MISRAC++2023-11.3.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-0-21
Package=MISRAC++2008
Group=MISRAC++2008-5-0
CheckSynopsis="(Required) Bitwise operators shall only be applied to operands of unsigned underlying type."
LongDesc="Applications of bitwise operators to signed operands were found."
Severity=Low
IdenticalTo=MISRAC2004-12.7
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-2-2
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Required) A pointer to a virtual base class shall only be cast to a pointer to a derived class by means of dynamic_cast."
LongDesc="Use dynamic_cast to cast an object between a virtual base class and a derived class"
Severity=Medium
IdenticalTo=MISRAC++2023-8.2.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-2-4
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Required) C-style casts (other than void casts) and functional notation casts (other than explicit constructor calls) shall not be used."
LongDesc="Old style casts (other than void casts) were found."
Severity=Medium
IdenticalTo=CAST-old-style MISRAC++2023-8.2.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-2-5
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Required) A cast shall not remove any const or volatile qualification from the type of a pointer or reference."
LongDesc="Casts that remove a const or volatile qualification were found."
Severity=Low
IdenticalTo=MISRAC2004-11.5 MISRAC2012-Rule-11.8 MISRAC++2023-8.2.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-2-6
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Required) A cast shall not convert a pointer to a function to any other pointer type, including a pointer to function type."
LongDesc="A cast shall not convert a pointer to a function to any other pointer type, including a pointer to function type."
Severity=Medium
IdenticalTo=MISRAC++2023-8.2.4
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-2-7
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Required) An object with pointer type shall not be converted to an unrelated pointer type, either directly or indirectly."
LongDesc="A pointer to object type is cast to a pointer to a different object type."
Severity=Low
IdenticalTo=MISRAC2004-11.4
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-2-9
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Advisory) A cast should not convert a pointer type to an integral type."
LongDesc="A cast from a pointer type to an integral type was found."
Severity=Low
IdenticalTo=MISRAC2004-11.3 MISRAC2012-Rule-11.4 MISRAC++2023-8.2.7
Default=off
Visible=Yes

CheckName=MISRAC++2008-5-2-10
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Advisory) The increment (++) and decrement (--) operators should not be mixed with other operators in an expression."
LongDesc="The increment (++) and decrement (--) operators are being used mixed with other operators in an expression."
Severity=Low
IdenticalTo=MISRAC2004-12.13 MISRAC2012-Rule-13.3
Default=off
Visible=Yes

CheckName=MISRAC++2008-5-2-11_a
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Required) The comma operator, && operator and the || operator shall not be overloaded."
LongDesc="Overloaded && and || operators were found."
Severity=Low
IdenticalTo=LOGIC-overload MISRAC++2023-16.5.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-2-11_b
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Required) The comma operator, && operator and the || operator shall not be overloaded."
LongDesc="Overloaded comma operators were found."
Severity=Low
IdenticalTo=COMMA-overload
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-2-12
Package=MISRAC++2008
Group=MISRAC++2008-5-2
CheckSynopsis="(Required) An identifier with array type passed as a function argument shall not decay to a pointer."
LongDesc="Found array decaying to pointer in function call"
Severity=Medium
IdenticalTo=MISRAC++2023-7.11.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-2-8
Package=MISRAC++2008
Group=MISRAC++2023-5.2
CheckSynopsis="(Required) An object with integer type or pointer to void type shall not be converted to an object with pointer type."
LongDesc="Casting from integral types to pointer types can lead to unspecified behavior"
Severity=Medium
IdenticalTo=MISRAC++2023-8.2.6
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-3-1
Package=MISRAC++2008
Group=MISRAC++2008-5-3
CheckSynopsis="(Required) Each operand of the ! operator, the logical && or the logical || operators shall have type bool."
LongDesc="Operands of the logical operators (&&, ||, and !) were found that are not of type bool."
Severity=Low
IdenticalTo=MISRAC2004-12.6_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-3-2
Package=MISRAC++2008
Group=MISRAC++2008-5-3
CheckSynopsis="(Required) The unary minus operator shall not be applied to an expression whose underlying type is unsigned."
LongDesc="Uses of unary minus on unsigned expressions were found."
Severity=Low
IdenticalTo=MISRAC2012-Rule-10.1_R8 MISRAC2004-12.9 MISRAC++2023-8.3.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-3-3
Package=MISRAC++2008
Group=MISRAC++2008-5-3
CheckSynopsis="(Required) The unary & operator shall not be overloaded."
LongDesc="Occurances of overloaded & operators were found."
Severity=Low
IdenticalTo=PTR-overload MISRAC++2023-16.5.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-3-4
Package=MISRAC++2008
Group=MISRAC++2008-5-3
CheckSynopsis="(Required) Evaluation of the operand to the sizeof operator shall not contain side effects."
LongDesc="There are sizeof expressions that contain side effects."
Severity=Medium
IdenticalTo=SIZEOF-side-effect MISRAC2004-12.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-8-1
Package=MISRAC++2008
Group=MISRAC++2008-5-8
CheckSynopsis="(Required) The right hand operand of a shift operator shall lie between zero and one less than the width in bits of the underlying type of the left hand operand."
LongDesc="Possible out-of-range shifts were found."
Severity=Medium
IdenticalTo=ATH-shift-bounds MISRAC2004-12.8 MISRAC2012-Rule-12.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-14-1
Package=MISRAC++2008
Group=MISRAC++2008-5-14
CheckSynopsis="(Required) The right hand operand of a logical && or || operator shall not contain side effects."
LongDesc="There are right-hand operands of && or || operators that contain side effects."
Severity=Medium
IdenticalTo=MISRAC2004-12.4 MISRAC2012-Rule-13.5 MISRAC++2023-8.14.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-18-1
Package=MISRAC++2008
Group=MISRAC++2008-5-18
CheckSynopsis="(Required) The comma operator shall not be used."
LongDesc="There are uses of the comma operator."
Severity=Low
IdenticalTo=MISRAC2004-12.10 MISRAC2012-Rule-12.3 MISRAC++2023-8.19.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-5-19-1
Package=MISRAC++2008
Group=MISRAC++2008-5-19
CheckSynopsis="(Advisory) Evaluation of constant unsigned integer expressions should not lead to wrap-around."
LongDesc="A constant unsigned integer expression overflows."
Severity=Medium
IdenticalTo=EXPR-const-overflow MISRAC2004-12.11 MISRAC2012-Rule-12.4 MISRAC++2023-8.20.1
Default=off
Visible=Yes

CheckName=MISRAC++2008-6-2-1
Package=MISRAC++2008
Group=MISRAC++2008-6-2
CheckSynopsis="(Required) Assignment operators shall not be used in sub-expressions."
LongDesc="One or more assignment operators are used in sub-expressions."
Severity=Low
IdenticalTo=MISRAC2012-Rule-13.4_b MISRAC++2023-8.18.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-2-2
Package=MISRAC++2008
Group=MISRAC++2008-6-2
CheckSynopsis="(Required) Floating-point expressions shall not be directly or indirectly tested for equality or inequality."
LongDesc="There are floating-point comparisons that use the == or != operators."
Severity=Low
IdenticalTo=ATH-cmp-float MISRAC2004-13.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-2-3
Package=MISRAC++2008
Group=MISRAC++2008-6-2
CheckSynopsis="(Required) Before preprocessing, a null statement shall only occur on a line by itself; it may be followed by a comment, provided that the first character following the null statement is a white-space character."
LongDesc="There are stray semicolons on the same line as other code."
Severity=Low
IdenticalTo=EXP-stray-semicolon MISRAC2004-14.3
Default=off
Visible=Yes

CheckName=MISRAC++2008-6-3-1_a
Package=MISRAC++2008
Group=MISRAC++2008-6-3
CheckSynopsis="(Required) The statement forming the body of a switch, while, do ... while or for statement shall be a compound statement."
LongDesc="There are missing braces in do ... while statements."
Severity=Low
IdenticalTo=MISRAC2004-14.8_a MISRAC2012-Rule-15.6_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-3-1_b
Package=MISRAC++2008
Group=MISRAC++2008-6-3
CheckSynopsis="(Required) The statement forming the body of a switch, while, do ... while or for statement shall be a compound statement."
LongDesc="There are missing braces in for statements."
Severity=Low
IdenticalTo=MISRAC2004-14.8_b MISRAC2012-Rule-15.6_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-3-1_c
Package=MISRAC++2008
Group=MISRAC++2008-6-3
CheckSynopsis="(Required) The statement forming the body of a switch, while, do ... while or for statement shall be a compound statement."
LongDesc="There are missing braces in switch statements."
Severity=Low
IdenticalTo=MISRAC2004-14.8_c MISRAC2012-Rule-15.6_d
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-3-1_d
Package=MISRAC++2008
Group=MISRAC++2008-6-3
CheckSynopsis="(Required) The statement forming the body of a switch, while, do ... while or for statement shall be a compound statement."
LongDesc="There are missing braces in while statements."
Severity=Low
IdenticalTo=MISRAC2004-14.8_d MISRAC2012-Rule-15.6_e
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-4-1
Package=MISRAC++2008
Group=MISRAC++2008-6-4
CheckSynopsis="(Required) An if ( condition ) construct shall be followed by a compound statement. The else keyword shall be followed by either a compound statement, or another if statement."
LongDesc="There are missing braces in if, else, or else if statements."
Severity=Low
IdenticalTo=MISRAC2004-14.9 MISRAC++2008-6-4-1 MISRAC2012-Rule-15.6_c
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-4-2
Package=MISRAC++2008
Group=MISRAC++2008-6-4
CheckSynopsis="(Required) All if ... else if constructs shall be terminated with an else clause."
LongDesc="If ... else if constructs that are not terminated with an else clause were detected."
Severity=Low
IdenticalTo=MISRAC2004-14.10 MISRAC2012-Rule-15.7 MISRAC++2023-9.4.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-4-3
Package=MISRAC++2008
Group=MISRAC++2008-6-4
CheckSynopsis="(Required) A switch statement shall be a well-formed switch statement."
LongDesc="Detected switch statements that do not conform to the MISRA C++ switch syntax."
Severity=Low
IdenticalTo=MISRAC++2023-9.4.2_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-4-4
Package=MISRAC++2008
Group=MISRAC++2008-6-4
CheckSynopsis="(Required) A switch-label shall only be used when the most closely-enclosing compound statement is the body of a switch statement."
LongDesc="Switch labels were found in nested blocks."
Severity=Low
IdenticalTo=MISRAC2004-15.1 MISRAC2012-Rule-16.2 MISRAC++2023-9.4.2_f
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-4-5
Package=MISRAC++2008
Group=MISRAC++2008-6-4
CheckSynopsis="(Required) An unconditional throw or break statement shall terminate every non-empty switch-clause."
LongDesc="Non-empty switch cases were found that are not terminated by a break."
Severity=Medium
IdenticalTo=MISRAC2004-15.2 MISRAC2012-Rule-16.3 MISRAC++2023-9.4.2_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-4-6
Package=MISRAC++2008
Group=MISRAC++2008-6-4
CheckSynopsis="(Required) The final clause of a switch statement shall be the default-clause."
LongDesc="Switch statements without a default clause, or with a default clause that is not the final clause, were found."
Severity=Low
IdenticalTo=MISRAC2004-15.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-4-7
Package=MISRAC++2008
Group=MISRAC++2008-6-4
CheckSynopsis="(Required) The condition of a switch statement shall not have bool type."
LongDesc="A switch expression was found that represents a value that is effectively Boolean."
Severity=Low
IdenticalTo=MISRAC2004-15.4 MISRAC2012-Rule-16.7
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-4-8
Package=MISRAC++2008
Group=MISRAC++2008-6-4
CheckSynopsis="(Required) Every switch statement shall have at least one case-clause."
LongDesc="One or more switch statements without a case clause were found."
Severity=Low
IdenticalTo=MISRAC2004-15.5 MISRAC++2023-9.4.2_d
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-5-1_a
Package=MISRAC++2008
Group=MISRAC++2008-6-5
CheckSynopsis="(Required) A for loop shall contain a single loop-counter which shall not have floating type."
LongDesc="A loop counter were found having floating type."
Severity=Low
IdenticalTo=MISRAC2012-Rule-14.1_a CERT-FLP30-C_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-5-1_b
Package=MISRAC++2008
Group=MISRAC++2008-6-5
CheckSynopsis="(Required) A for loop shall contain a single loop-counter which shall not have floating type."
LongDesc="Multiple variables are being used to control a for loop."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-5-2
Package=MISRAC++2008
Group=MISRAC++2008-6-5
CheckSynopsis="(Required) If loop-counter is not modified by -- or ++, then, within condition, the loop-counter shall only be used as an operand to <=, <, > or >=."
LongDesc="A loop counter was found that might not match the loop condition test."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-5-3
Package=MISRAC++2008
Group=MISRAC++2008-6-5
CheckSynopsis="(Required) The loop-counter shall not be modified within condition or statement."
LongDesc="A for loop counter variable was found that is modified in the body of the loop."
Severity=Low
IdenticalTo=MISRAC2004-13.6 MISRAC2012-Rule-14.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-5-4
Package=MISRAC++2008
Group=MISRAC++2008-6-5
CheckSynopsis="(Required) The loop-counter shall be modified by one of: --, ++, -=n, or +=n; where n remains constant for the duration of the loop."
LongDesc="A potentially inconsistent loop counter modification was found."
Severity=Low
IdenticalTo=MISRAC++2023-9 5.1 _c
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-5-5
Package=MISRAC++2008
Group=MISRAC++2008-6-5
CheckSynopsis="(Required) A loop-control-variable other than the loop-counter shall not be modified within condition or expression."
LongDesc="A non-loop-counter variable was found that is assigned in the condition or expression part of a for loop."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-5-6
Package=MISRAC++2008
Group=MISRAC++2008-6-5
CheckSynopsis="(Required) A loop-control-variable other than the loop-counter which is modified in statement shall have type bool."
LongDesc="A non-boolean variable was detected that is modified in the loop and used as loop condition."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-6-1
Package=MISRAC++2008
Group=MISRAC++2008-6-6
CheckSynopsis="(Required) Any label referenced by a goto statement shall be declared in the same block, or in a block enclosing the goto statement."
LongDesc="The destination of a goto statement is a nested code block."
Severity=Low
IdenticalTo=MISRAC2012-Rule-15.3 MISRAC++2023-9.6.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-6-2
Package=MISRAC++2008
Group=MISRAC++2008-6-6
CheckSynopsis="(Required) The goto statement shall jump to a label declared later in the same function body."
LongDesc="A goto statement is declared after the destination label."
Severity=Low
IdenticalTo=MISRAC2012-Rule-15.2 MISRAC++2023-9.6.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-6-4
Package=MISRAC++2008
Group=MISRAC++2008-6-6
CheckSynopsis="(Required) For any iteration statement there shall be no more than one break or goto statement used for loop termination."
LongDesc="One or more loops have more than one termination point."
Severity=Low
IdenticalTo=MISRAC2012-Rule-15.4
Default=on
Visible=Yes

CheckName=MISRAC++2008-6-6-5
Package=MISRAC++2008
Group=MISRAC++2008-6-6
CheckSynopsis="(Required) A function shall have a single point of exit at the end of the function."
LongDesc="One or more functions have multiple exit points or an exit point that is not at the end of the function."
Severity=Low
IdenticalTo=MISRAC2004-14.7 MISRAC2012-Rule-15.5
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-1-1
Package=MISRAC++2008
Group=MISRAC++2008-7-1
CheckSynopsis="(Required) A variable which is not modified shall be const qualified."
LongDesc="A local variable that is not modified after its initialization is not const qualified."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-1-2
Package=MISRAC++2008
Group=MISRAC++2008-7-1
CheckSynopsis="(Required) A pointer or reference parameter in a function shall be declared as pointer to const or reference to const if the corresponding object is not modified."
LongDesc="A parameter in a function that is not modified by the function is not const qualified."
Severity=Low
IdenticalTo=MISRAC2004-16.7 MISRAC++2023-10.1.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-2-1
Package=MISRAC++2008
Group=MISRAC++2008-7-2
CheckSynopsis="(Required) An expression with enum underlying type shall only have values corresponding to the enumerators of the enumeration."
LongDesc="There are conversions to enum type that are out of range of the enumeration."
Severity=Medium
IdenticalTo=ENUM-bounds
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-3-1
Package=MISRAC++2008
Group=MISRAC++2008-7-3
CheckSynopsis="(Required) The global namespace shall only contain main, namespace declarations and extern C declarations."
LongDesc="Found a global declaration not being main, namespace or extern C."
Severity=Medium
IdenticalTo=MISRAC++2023-6.0.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-3-2
Package=MISRAC++2008
Group=MISRAC++2008-7-3
CheckSynopsis="(Required) The identifier main shall not be used for a function other than the global function main."
LongDesc="Only the global main function shall be named "main"."
Severity=Medium
IdenticalTo=MISRAC++2023-6.0.4
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-3-3
Package=MISRAC++2008
Group=MISRAC++2008-7-3
CheckSynopsis="(Required) There shall be no unnamed namespaces in header files."
LongDesc="Any entity declared in an anonymous namespace in a header file  will be different in different translation units which may be unexpected."
Severity=Medium
IdenticalTo=MISRAC++2023-10.3.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-4-3
Package=MISRAC++2008
Group=MISRAC++2008-7-4
CheckSynopsis="(Required) Assembler language shall be encapsulated and isolated."
LongDesc="There are inline assembler statements that are not encapsulated in functions."
Severity=Low
IdenticalTo=MISRAC2004-2.1 MISRAC2012-Dir-4.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-5-1_a
Package=MISRAC++2008
Group=MISRAC++2008-7-5
CheckSynopsis="(Required) A function shall not return a reference or a pointer to an automatic variable (including parameters), defined within the function."
LongDesc="A stack object is returned from a function as a reference."
Severity=High
IdenticalTo=MEM-stack-ref MISRAC++2023-6.8.2_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-5-1_b
Package=MISRAC++2008
Group=MISRAC++2008-7-5
CheckSynopsis="(Required) A function shall not return a reference or a pointer to an automatic variable (including parameters), defined within the function."
LongDesc="A function might return an address on the stack."
Severity=High
IdenticalTo=MEM-stack MISRAC++2023-6.8.2_b MISRAC2004-17.6_a MISRAC2012-Rule-18.6_a CERT-DCL30-C_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-5-2_a
Package=MISRAC++2008
Group=MISRAC++2008-7-5
CheckSynopsis="(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist."
LongDesc="Detected a stack address stored in a global pointer."
Severity=High
IdenticalTo=MEM-stack-global MISRAC++2023-6.8.3_a MISRAC2004-17.6_b MISRAC2012-Rule-18.6_b CERT-DCL30-C_c
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-5-2_b
Package=MISRAC++2008
Group=MISRAC++2008-7-5
CheckSynopsis="(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist."
LongDesc="Detected a stack address in the field of a global struct."
Severity=High
IdenticalTo=MISRAC++2023-6.8.3_b MEM-stack-global-field MISRAC2004-17.6_c MISRAC2012-Rule-18.6_c CERT-DCL30-C_d
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-5-2_c
Package=MISRAC++2008
Group=MISRAC++2008-7-5
CheckSynopsis="(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist."
LongDesc="Detected a stack address stored in a parameter of pointer or array type."
Severity=High
IdenticalTo=MEM-stack-param MISRAC++2023-6.8.3_c MISRAC2004-17.6_d MISRAC2012-Rule-1.3_s MISRAC2012-Rule-18.6_d CERT-DCL30-C_e
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-5-2_d
Package=MISRAC++2008
Group=MISRAC++2008-7-5
CheckSynopsis="(Required) The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist."
LongDesc="Detected a stack address stored via a reference parameter."
Severity=High
IdenticalTo=MEM-stack-param-ref MISRAC2012-Rule-1.3_s MISRAC++2023-6.8.3_d
Default=on
Visible=Yes

CheckName=MISRAC++2008-7-5-4_a
Package=MISRAC++2008
Group=MISRAC++2008-7-5
CheckSynopsis="(Advisory) Functions should not call themselves, either directly or indirectly."
LongDesc="There are functions that call themselves directly."
Severity=Low
IdenticalTo=MISRAC2004-16.2_a MISRAC2012-Rule-17.2_a MISRAC++2023-8.2.10_a
Default=off
Visible=Yes

CheckName=MISRAC++2008-7-5-4_b
Package=MISRAC++2008
Group=MISRAC++2008-7-5
CheckSynopsis="(Advisory) Functions should not call themselves, either directly or indirectly."
LongDesc="There are functions that call themselves indirectly."
Severity=Low
IdenticalTo=MISRAC2004-16.2_b MISRAC2012-Rule-17.2_b MISRAC++2023-8.2.10_b
Default=off
Visible=Yes

CheckName=MISRAC++2008-8-0-1
Package=MISRAC++2008
Group=MISRAC++2008-8-0
CheckSynopsis="(Required) An init-declarator-list or a member-declarator-list shall consist of a single init-declarator or member-declarator respectively."
LongDesc="There are declarations that contain more than one variable or constant each."
Severity=Low
IdenticalTo=CERT-DCL04-C MISRAC++2023-10.0.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-3-1
Package=MISRAC++2008
Group=MISRAC++2008-8-3
CheckSynopsis="(Required) Parameters in an overriding virtual function shall either use the same default arguments as the function they override, or else shall not specify any default arguments."
LongDesc="Using different default vales might be confusing for the user of the class.  Value must either be same constant, which must be specified in base class  function, or not specified."
Severity=Medium
IdenticalTo=MISRAC++2023-13.3.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-4-1
Package=MISRAC++2008
Group=MISRAC++2008-8-4
CheckSynopsis="(Required) Functions shall not be defined using the ellipsis notation."
LongDesc="There are functions defined using the ellipsis (...) notation."
Severity=Low
IdenticalTo=MISRAC2004-16.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-4-2_a
Package=MISRAC++2008
Group=MISRAC++2008-8-4
CheckSynopsis="(Required) The identifiers used for the parameters in a re-declaration of a function shall be identical to those in the declaration."
LongDesc="Different names of the same parameter can lead to confusion when reading the code."
Severity=Medium
IdenticalTo=MISRAC2004-16.4 MISRAC++2023-13.3.3_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-4-2_b
Package=MISRAC++2008
Group=MISRAC++2008-8-4
CheckSynopsis="(Required) The identifiers used for the parameters in a re-declaration of a function shall be identical to those in the declaration."
LongDesc="Different names of the same parameter can lead to confusion when reading the code."
Severity=Medium
IdenticalTo=MISRAC++2023-13.3.3_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-4-3
Package=MISRAC++2008
Group=MISRAC++2008-8-4
CheckSynopsis="(Required) All exit paths from a function with non-void return type shall have an explicit return statement with an expression."
LongDesc="For some execution paths, no return statements are executed in functions with a non-void return type."
Severity=Medium
IdenticalTo=SPC-return MISRAC2004-16.8 MISRAC2012-Rule-17.4 MISRAC++2023-9.6.5
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-4-4
Package=MISRAC++2008
Group=MISRAC++2008-8-4
CheckSynopsis="(Required) A function identifier shall either be used to call the function or it shall be preceded by &."
LongDesc="The addresses of one or more functions are taken without an explicit &."
Severity=Low
IdenticalTo=MISRAC2004-16.9
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-5-1_a
Package=MISRAC++2008
Group=MISRAC++2008-8-5
CheckSynopsis="(Required) All variables shall have a defined value before they are used."
LongDesc="In all execution paths, variables are read before they are assigned a value."
Severity=High
IdenticalTo=SPC-uninit-var-all MISRAC2004-9.1_a MISRAC2012-Rule-9.1_e
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-5-1_b
Package=MISRAC++2008
Group=MISRAC++2008-8-5
CheckSynopsis="(Required) All variables shall have a defined value before they are used."
LongDesc="In some execution paths, variables might be read before they are assigned a value."
Severity=High
IdenticalTo=SPC-uninit-var-some MISRAC2004-9.1_b MISRAC2012-Rule-9.1_f MISRAC++2023-11.6.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-5-1_c
Package=MISRAC++2008
Group=MISRAC++2008-8-5
CheckSynopsis="(Required) All variables shall have a defined value before they are used."
LongDesc="One or more uninitialized or NULL pointers are dereferenced."
Severity=High
IdenticalTo=PTR-uninit MISRAC2004-9.1_c
Default=on
Visible=Yes

CheckName=MISRAC++2008-8-5-2
Package=MISRAC++2008
Group=MISRAC++2008-8-5
CheckSynopsis="(Required) Braces shall be used to indicate and match the structure in the nonzero initialization of arrays and structures."
LongDesc="There are one or more non-zero array initializations that do not exactly match the structure of the array declaration."
Severity=Medium
IdenticalTo=MISRAC2004-9.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-9-3-1
Package=MISRAC++2008
Group=MISRAC++2008-9-3
CheckSynopsis="(Required) const member functions shall not return non-const pointers or references to class-data."
LongDesc="A member function qualified as const returns a pointer member variable."
Severity=Medium
IdenticalTo=CONST-member-ret
Default=on
Visible=Yes

CheckName=MISRAC++2008-9-3-2
Package=MISRAC++2008
Group=MISRAC++2008-9-3
CheckSynopsis="(Required) Member functions shall not return non-const handles to class-data."
LongDesc="Member functions return non-const handles to members."
Severity=Medium
IdenticalTo=CPU-return-ref-to-class-data
Default=on
Visible=Yes

CheckName=MISRAC++2008-9-5-1
Package=MISRAC++2008
Group=MISRAC++2008-9-5
CheckSynopsis="(Required) Unions shall not be used."
LongDesc="Unions were found."
Severity=Low
IdenticalTo=MISRAC2004-18.4 MISRAC2012-Rule-19.2 MISRAC++2023-12.3.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-9-6-2
Package=MISRAC++2008
Group=MISRAC++2008-9-6
CheckSynopsis="(Required) Bit-fields shall be either bool type or an explicitly unsigned or signed integral type."
LongDesc="Bitfields of plain int type were found."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-9-6-3
Package=MISRAC++2008
Group=MISRAC++2008-9-6
CheckSynopsis="(Required) Bit-fields shall not have enum type."
LongDesc="Bitfields of plain int type were found."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-9-6-4
Package=MISRAC++2008
Group=MISRAC++2008-9-6
CheckSynopsis="(Required) Named bit-fields with signed integer type shall have a length of more than one bit."
LongDesc="Signed single-bit bitfields (excluding anonymous fields) were found."
Severity=Low
IdenticalTo=STRUCT-signed-bit MISRAC2004-6.5 MISRAC2012-Rule-6.2 MISRAC++2023-12.2.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-10-1-1
Package=MISRAC++2008
Group=MISRAC++2008-10-1
CheckSynopsis="(Advisory) Classes should not be derived from virtual bases."
LongDesc="Virtual inheritance introduces potentially confusing  behaviour as call by dominance and base class  initialization order changes"
Severity=Low
IdenticalTo=MISRAC++2023-13.1.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-10-1-3
Package=MISRAC++2008
Group=MISRAC++2008-10-1
CheckSynopsis="(Required) An accessible base class shall not be both virtual and non-virtual in the same hierarchy"
LongDesc="This makes it confusing whether the intent is to have the base object instantiated one or more times."
Severity=Medium
IdenticalTo=MISRAC++2023-13.1.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-12-1-1_a
Package=MISRAC++2008
Group=MISRAC++2008-12-1
CheckSynopsis="(Required) An object's dynamic type shall not be used from the body of its constructor or destructor."
LongDesc="A virtual member function is called in a class constructor."
Severity=Medium
IdenticalTo=CPU-ctor-call-virt MISRAC++2023-15.1.1_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-12-1-1_b
Package=MISRAC++2008
Group=MISRAC++2008-12-1
CheckSynopsis="(Required) An object's dynamic type shall not be used from the body of its constructor or destructor."
LongDesc="A virtual member function is called in a class destructor."
Severity=Medium
IdenticalTo=CPU-dtor-call-virt MISRAC++2023-15.1.1_b
Default=on
Visible=Yes

CheckName=MISRAC++2008-12-1-3
Package=MISRAC++2008
Group=MISRAC++2008-12-1
CheckSynopsis="(Required) All constructors that are callable with a single argument of fundamental type shall be declared explicit."
LongDesc="Constructors that can be called with a single argument are not declared explicit. Conversion operators shall also be set explicit."
Severity=Low
IdenticalTo=CPU-ctor-implicit MISRAC++2023-15.1.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-14-6-1
Package=MISRAC++2008
Group=MISRAC++2008-14-6
CheckSynopsis="(Required) In a class template with a dependent base, any name that may be found in that dependent base shall be referred to using a qualified-id or this->."
LongDesc="Found a dependent bae name without qualified lookup."
Severity=Medium
IdenticalTo=MISRAC++2023-6.4.3
Default=on
Visible=No

CheckName=MISRAC++2008-15-0-2
Package=MISRAC++2008
Group=MISRAC++2008-15-0
CheckSynopsis="(Advisory) An exception object should not have pointer type."
LongDesc="Throw of exceptions by pointer."
Severity=Medium
IdenticalTo=THROW-ptr MISRAC++2023-18.1.1
Default=off
Visible=Yes

CheckName=MISRAC++2008-15-1-2
Package=MISRAC++2008
Group=MISRAC++2008-15-1
CheckSynopsis="(Required) NULL shall not be thrown explicitly."
LongDesc="Throw of NULL integer constant."
Severity=Medium
IdenticalTo=THROW-null
Default=on
Visible=Yes

CheckName=MISRAC++2008-15-1-3
Package=MISRAC++2008
Group=MISRAC++2008-15-1
CheckSynopsis="(Required) An empty throw (throw;) shall only be used in the compound-statement of a catch handler."
LongDesc="Unsafe rethrow of exception."
Severity=Medium
IdenticalTo=THROW-empty MISRAC++2023-18.1.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-15-3-1
Package=MISRAC++2008
Group=MISRAC++2008-15-3
CheckSynopsis="(Required) Exceptions shall be raised only after start-up and before termination of the program."
LongDesc="There are exceptions thrown without a handler in some call paths that lead to that point."
Severity=Medium
IdenticalTo=THROW-static
Default=on
Visible=Yes

CheckName=MISRAC++2008-15-3-2
Package=MISRAC++2008
Group=MISRAC++2008-15-3
CheckSynopsis="(Advisory) There should be at least one exception handler to catch all otherwise unhandled exceptions"
LongDesc="A main does not have a default exception handler that will catch exceptions. Without this, an unhandled exception might lead to termination in an implementation-defined manner."
Severity=Medium
IdenticalTo=THROW-main MISRAC++2023-18.3.1
Default=off
Visible=Yes

CheckName=MISRAC++2008-15-3-3
Package=MISRAC++2008
Group=MISRAC++2008-15-3
CheckSynopsis="(Required) Handlers of a function-try-block implementation of a class constructor or destructor shall not reference non-static members from this class or its bases."
LongDesc="One or more exception handlers in a constructor or destructor accesses a non-static member variable that might not exist."
Severity=Medium
IdenticalTo=CATCH-xtor-bad-member MISRAC++2023-18.3.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-15-3-4
Package=MISRAC++2008
Group=MISRAC++2008-15-3
CheckSynopsis="(Required) Each exception explicitly thrown in the code shall have a handler of a compatible type in all call paths that could lead to that point."
LongDesc="There are calls to functions that are explicitly declared to throw an exception type that are not handled (or declared as thrown) by the caller."
Severity=Medium
IdenticalTo=THROW-unhandled
Default=on
Visible=Yes

CheckName=MISRAC++2008-15-3-5
Package=MISRAC++2008
Group=MISRAC++2008-15-3
CheckSynopsis="(Required) A class type exception shall always be caught by reference."
LongDesc="Exception objects are caught by value, not by reference."
Severity=Medium
IdenticalTo=CATCH-object-slicing MISRAC++2023-18.3.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-15-5-1
Package=MISRAC++2008
Group=MISRAC++2008-15-5
CheckSynopsis="(Required) A class destructor shall not exit with an exception."
LongDesc="An exception is thrown, or might be thrown, in a class destructor."
Severity=Medium
IdenticalTo=COP-dtor-throw
Default=on
Visible=Yes

CheckName=MISRAC++2008-16-0-1
Package=MISRAC++2008
Group=MISRAC++2008-16-0
CheckSynopsis="(Required) #include directives in a file shall only be preceded by other preprocessor directives or comments."
LongDesc="#include directives were found that are not first in the source file."
Severity=Low
IdenticalTo=MISRAC2004-19.1 MISRAC2012-Rule-20.1 MISRAC++2023-19.0.3
Default=off
Visible=Yes

CheckName=MISRAC++2008-16-0-3
Package=MISRAC++2008
Group=MISRAC++2008-16-0
CheckSynopsis="(Required) #undef shall not be used."
LongDesc="Found occurrances of #undef."
Severity=Low
IdenticalTo=MISRAC2004-19.6 MISRAC2012-Rule-20.5
Default=on
Visible=Yes

CheckName=MISRAC++2008-16-0-4
Package=MISRAC++2008
Group=MISRAC++2008-16-0
CheckSynopsis="(Required) Function-like macros shall not be defined."
LongDesc="Definitions of function-like macros were found."
Severity=Low
IdenticalTo=MISRAC2004-19.7 MISRAC2012-Dir-4.9 MISRAC++2023-19.0.2
Default=on
Visible=Yes

CheckName=MISRAC++2008-16-2-2
Package=MISRAC++2008
Group=MISRAC++2008-16-2
CheckSynopsis="(Required) C++ macros shall only be used for: include guards, type qualifiers, or storage class specifiers."
LongDesc="Definitions of macros that are not include guards were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-16-2-3
Package=MISRAC++2008
Group=MISRAC++2008-16-2
CheckSynopsis="(Required) Include guards shall be provided."
LongDesc="Header files without #include guards were found."
Severity=Low
IdenticalTo=MISRAC2004-19.15 MISRAC2012-Dir-4.10 MISRAC++2023-19.2.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-16-2-4
Package=MISRAC++2008
Group=MISRAC++2008-16-2
CheckSynopsis="(Required) The ', ", /* or // characters shall not occur in a header file name."
LongDesc="There are illegal characters in header file names."
Severity=Low
IdenticalTo=MISRAC++2023-19.2.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-16-2-5
Package=MISRAC++2008
Group=MISRAC++2008-16-2
CheckSynopsis="(Advisory) The backslash character should not occur in a header file name."
LongDesc="There are illegal characters in header file names."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2008-16-3-1
Package=MISRAC++2008
Group=MISRAC++2008-16-3
CheckSynopsis="(Required) There shall be at most one occurrence of the # or ## operators in a single macro definition."
LongDesc="There are multiple # or ## operators in a macro definition."
Severity=Medium
IdenticalTo=DEFINE-hash-multiple MISRAC2004-19.12
Default=on
Visible=Yes

CheckName=MISRAC++2008-16-3-2
Package=MISRAC++2008
Group=MISRAC++2008-16-3
CheckSynopsis="(Advisory) The # and ## operators should not be used."
LongDesc="# and ## operators were found in macro definitions."
Severity=Low
IdenticalTo=MISRAC2004-19.13 MISRAC2012-Rule-20.10 MISRAC++2023-19.3.1
Default=off
Visible=Yes

CheckName=MISRAC++2008-17-0-1
Package=MISRAC++2008
Group=MISRAC++2008-17-0
CheckSynopsis="(Required) Reserved identifiers, macros and functions in the standard library shall not be defined, redefined or undefined."
LongDesc="Detected a #define or #undef of a reserved identifier in the standard library."
Severity=Low
IdenticalTo=MISRAC2004-20.1 MISRAC2012-Rule-21.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-17-0-3
Package=MISRAC++2008
Group=MISRAC++2008-17-0
CheckSynopsis="(Required) The names of standard library functions shall not be overridden."
LongDesc="One or more library functions are being overridden."
Severity=Low
IdenticalTo=MISRAC2004-20.2 MISRAC2012-Rule-21.2 CERT-DCL37-C_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-17-0-5
Package=MISRAC++2008
Group=MISRAC++2008-17-0
CheckSynopsis="(Required) The setjmp macro and the longjmp function shall not be used."
LongDesc="Found uses of setjmp.h."
Severity=Low
IdenticalTo=MISRAC2004-20.7 MISRAC2012-Rule-21.4
Default=on
Visible=Yes

CheckName=MISRAC++2008-18-0-1
Package=MISRAC++2008
Group=MISRAC++2008-18-0
CheckSynopsis="(Required) The C library shall not be used."
LongDesc="C library includes were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-18-0-2
Package=MISRAC++2008
Group=MISRAC++2008-18-0
CheckSynopsis="(Required) The library functions atof, atoi and atol from library cstdlib shall not be used."
LongDesc="Uses of atof, atoi, atol and atoll were found."
Severity=Low
IdenticalTo=MISRAC2004-20.10 MISRAC2012-Rule-21.7 MISRAC++2023-21.2.1
Default=on
Visible=Yes

CheckName=MISRAC++2008-18-0-3
Package=MISRAC++2008
Group=MISRAC++2008-18-0
CheckSynopsis="(Required) The library functions abort, exit, getenv and system from library cstdlib shall not be used."
LongDesc="Uses of abort, exit, getenv, and system were found."
Severity=Low
IdenticalTo=MISRAC2004-20.11 MISRAC2012-Rule-21.8
Default=on
Visible=Yes

CheckName=MISRAC++2008-18-0-4
Package=MISRAC++2008
Group=MISRAC++2008-18-0
CheckSynopsis="(Required) The time handling functions of library ctime shall not be used."
LongDesc="Uses of time.h functions: asctime, clock, ctime, difftime, gmtime, localtime, mktime, strftime, and time were found."
Severity=Low
IdenticalTo=MISRAC2004-20.12 MISRAC2012-Rule-21.10
Default=on
Visible=Yes

CheckName=MISRAC++2008-18-0-5
Package=MISRAC++2008
Group=MISRAC++2008-18-0
CheckSynopsis="(Required) The unbounded functions of library <cstring> shall not be used."
LongDesc="Uses of strcpy, strcmp, strcat, strchr, strspn, strcspn, strpbrk, strrchr, strstr, strtok, or strlen were found."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2008-18-2-1
Package=MISRAC++2008
Group=MISRAC++2008-18-2
CheckSynopsis="(Required) The macro offsetof shall not be used."
LongDesc="Uses of the built-in function offsetof were found."
Severity=Low
IdenticalTo=MISRAC2004-20.6 MISRAC++2023-21.2.4
Default=on
Visible=Yes

CheckName=MISRAC++2008-18-4-1
Package=MISRAC++2008
Group=MISRAC++2008-18-4
CheckSynopsis="(Required) Dynamic heap memory allocation shall not be used."
LongDesc="Uses of malloc, calloc, realloc, or free were found."
Severity=Low
IdenticalTo=MISRAC2004-20.4 MISRAC2012-Rule-21.3 MISRAC++2023-21.6.1_a
Default=on
Visible=Yes

CheckName=MISRAC++2008-18-7-1
Package=MISRAC++2008
Group=MISRAC++2008-18-7
CheckSynopsis="(Required) The signal handling facilities of csignal shall not be used."
LongDesc="Uses of signal.h were found."
Severity=Low
IdenticalTo=MISRAC2004-20.8 MISRAC2012-Rule-21.5 MISRAC++2023-21.10.3
Default=on
Visible=Yes

CheckName=MISRAC++2008-19-3-1
Package=MISRAC++2008
Group=MISRAC++2008-19-3
CheckSynopsis="(Required) The error indicator errno shall not be used."
LongDesc="Uses of errno were found."
Severity=Low
IdenticalTo=MISRAC2004-20.5
Default=on
Visible=Yes

CheckName=MISRAC++2008-27-0-1
Package=MISRAC++2008
Group=MISRAC++2008-27-0
CheckSynopsis="(Required) The stream input/output library cstdio shall not be used."
LongDesc="Uses of stdio.h were found."
Severity=Low
IdenticalTo=MISRAC2004-20.9 MISRAC2012-Rule-21.6 MISRAC++2023-30.0.1
Default=on
Visible=Yes

CheckName=MISRAC++2023-0.0.1
Package=MISRAC++2023
Group=MISRAC++2023-0.0
CheckSynopsis="(Required) A function shall not contain unreachable statements."
LongDesc="A part of the application is never executed."
Severity=Low
IdenticalTo=RED-dead MISRAC2004-14.1 MISRAC++2008-0-1-1 MISRAC++2008-0-1-9 MISRAC2012-Rule-2.1_b
Default=on
Visible=Yes

CheckName=MISRAC++2023-0.0.2_a
Package=MISRAC++2023
Group=MISRAC++2023-0.0
CheckSynopsis="(Advisory) Controlling expressions should not be invariant"
LongDesc="The condition in if, for, while, do-while statement sequences and the ternary operator is always met."
Severity=Medium
IdenticalTo=RED-cond-always MISRAC2012-Rule-14.3_a MISRAC++2008-0-1-2_a
Default=off
Visible=Yes

CheckName=MISRAC++2023-0.0.2_b
Package=MISRAC++2023
Group=MISRAC++2023-0.0
CheckSynopsis="(Advisory) Controlling expressions should not be invariant."
LongDesc="The condition in if, for, while, do-while statement sequences and the ternary operator will never be met."
Severity=Medium
IdenticalTo=MISRAC++2008-0-1-2_b MISRAC2012-Rule-14.3_b RED-cond-never
Default=off
Visible=Yes

CheckName=MISRAC++2023-0.0.2_c
Package=MISRAC++2023
Group=MISRAC++2023-0.0
CheckSynopsis="(Advisory) Controlling expressions should not be invariant"
LongDesc="A case statement within a switch statement is unreachable."
Severity=Low
IdenticalTo=MISRAC++2008-0-1-2_c MISRAC2012-Rule-2.1_a RED-case-reach
Default=off
Visible=Yes

CheckName=MISRAC++2023-0.1.1_a
Package=MISRAC++2023
Group=MISRAC++2023-0.1
CheckSynopsis="(Advisory) A value should not be unnecessarily written to a local object"
LongDesc="Found an unused write to an object"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-0.1.1_b
Package=MISRAC++2023
Group=MISRAC++2023-0.1
CheckSynopsis="(Advisory) A value should not be unnecessarily written to a local object"
LongDesc="Found an unused write to an object"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-0.1.2
Package=MISRAC++2023
Group=MISRAC++2023-0.1
CheckSynopsis="(Required) The value returned by a function shall be used"
LongDesc="There are unused function return values (excluding overloaded operators)"
Severity=Low
IdenticalTo=MISRAC++2008-0-1-7 MISRAC2012-Rule-17.7 RED-unused-return-val
Default=on
Visible=Yes

CheckName=MISRAC++2023-0.2.1
Package=MISRAC++2023
Group=MISRAC++2023-0.2
CheckSynopsis="(Advisory) Variables with limited visibility should be used at least once"
LongDesc="Found unused variable"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-0.2.2_a
Package=MISRAC++2023
Group=MISRAC++2023-0.2
CheckSynopsis="(Required) A named function parameter shall be used at least once"
LongDesc="A function parameter is declared but not used."
Severity=Low
IdenticalTo=MISRAC++2008-0-1-11
Default=on
Visible=Yes

CheckName=MISRAC++2023-0.2.2_b
Package=MISRAC++2023
Group=MISRAC++2023-0.2
CheckSynopsis="(Required) A named function parameter shall be used at least once"
LongDesc="A function parameter is declared but not used."
Severity=Low
IdenticalTo=MISRAC++2008-0-1-12
Default=on
Visible=Yes

CheckName=MISRAC++2023-0.2.3
Package=MISRAC++2023
Group=MISRAC++2023-0.2
CheckSynopsis="(Advisory) Types with limited visibility should be used at least once"
LongDesc="Found unused type"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-0.2.4
Package=MISRAC++2023
Group=MISRAC++2023-0.2
CheckSynopsis="(Advisory) Functions with limited visibility should be used at least once"
LongDesc="Found unused function"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_a
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.impldec]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_b
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.except.spec]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_c
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.cpp.headers]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_d
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.str.strstreams]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_e
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.uncaught]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_f
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.func.adaptor.binding]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_g
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.default.allocator]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_h
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.storage.iterator]"
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_i
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.temporary.buffer]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_j
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.meta.types]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_k
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.iterator.primitives]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_l
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.util.smartptr.shared.obs]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_m
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.locale.stdcvt]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-4.1.2_n
Package=MISRAC++2023
Group=MISRAC++2023-4.1
CheckSynopsis="(Advisory) Deprecated features should not be used"
LongDesc="Deprecated feature found [depr.conversions]"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-5.7.1
Package=MISRAC++2023
Group=MISRAC++2023-5.7
CheckSynopsis="(Required) The character sequence /* shall not be used within a C-style comment"
LongDesc="Detected /* inside comments"
Severity=Low
IdenticalTo=COMMENT-nested MISRAC++2008-2-7-1 MISRAC2004-2.3 MISRAC++2023-5.7.1
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.7.2_a
Package=MISRAC++2023
Group=MISRAC++2023-5.7
CheckSynopsis="(Advisory) Sections of code should not be "commented out""
LongDesc="Commented-out code has been detected. (To allow comments to contain pseudo-code or code samples, only comments that end in ;, {, or } characters are considered to be commented-out code.)"
Severity=Low
IdenticalTo=MISRAC++2008-2-7-2
Default=off
Visible=Yes

CheckName=MISRAC++2023-5.7.2_b
Package=MISRAC++2023
Group=MISRAC++2023-5.7
CheckSynopsis="(Advisory) Sections of code should not be "commented out""
LongDesc="Commented-out code has been detected. (To allow comments to contain pseudo-code or code samples, only comments that end in ';', '{', or '}' characters are considered to be commented-out code.)"
Severity=Low
IdenticalTo=MISRAC++2008-2-7-3
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.7.3
Package=MISRAC++2023
Group=MISRAC++2023-5.7
CheckSynopsis="(Required) Line-splicing shall not be used in // comments"
LongDesc="Line-splicing was found in // comments."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-3.2
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.10.1
Package=MISRAC++2023
Group=MISRAC++2023-5.10
CheckSynopsis="(Required) User-defined identifiers shall have an appropriate form"
LongDesc="Found a conflicting or illformed identifier"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.13.1
Package=MISRAC++2023
Group=MISRAC++2023-5.13
CheckSynopsis="(Required) Within character literals and non raw-string literals, \ shall only be used to form a defined escape sequence or universal character name"
LongDesc="Bad escape sequence"
Severity=Medium
IdenticalTo=MISRAC++2008-2-13-1 MISRAC2004-4.1
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.13.2
Package=MISRAC++2023
Group=MISRAC++2023-5.13
CheckSynopsis="(Required) Octal escape sequences, hexadecimal escape sequences and universal character names shall be terminated"
LongDesc="Escape sequence not properly terminated"
Severity=Medium
IdenticalTo=MISRAC2012-Rule-4.1
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.13.3
Package=MISRAC++2023
Group=MISRAC++2023-5.13
CheckSynopsis="(Required) Octal constants shall not be used"
LongDesc="Octal integer constants are used."
Severity=Low
IdenticalTo=MISRAC++2008-2-13-2 MISRAC2004-7.1 MISRAC2012-Rule-7.1 MISRAC++2023-5.13.3
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.13.4
Package=MISRAC++2023
Group=MISRAC++2023-5.13
CheckSynopsis="(Required) Unsigned integer literals shall be appropriately suffixed"
LongDesc="There are unsigned integer constants without a U suffix."
Severity=Low
IdenticalTo=MISRAC++2008-2-13-3 MISRAC2004-10.6 MISRAC2012-Rule-7.2
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.13.5
Package=MISRAC++2023
Group=MISRAC++2023-5.13
CheckSynopsis="(Required) The lowercase form of L shall not be used as the first character in a literal suffix"
LongDesc="The lower case character l was found used as a suffix on numeric constants."
Severity=Low
IdenticalTo=MISRAC2012-Rule-7.3
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.13.6
Package=MISRAC++2023
Group=MISRAC++2023-5.13
CheckSynopsis="(Required) An integer-literal of type long long shall not use a single L or l in any suffix"
LongDesc="Found an inappropriate suffix"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-5.13.7
Package=MISRAC++2023
Group=MISRAC++2023-5.13
CheckSynopsis="(Required) String literals with different encoding prefixes shall not be concatenated"
LongDesc="Found concatenation with different encoding prefixes"
Severity=Medium
IdenticalTo=MISRAC++2008-2-13-5
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.0.1_a
Package=MISRAC++2023
Group=MISRAC++2023-6.0
CheckSynopsis="(Required) Block scope declarations shall not be visually ambiguous"
LongDesc="Function declaration in block scope"
Severity=Medium
IdenticalTo=MISRAC++2008-3-1-2 MISRAC2004-8.6
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.0.1_b
Package=MISRAC++2023
Group=MISRAC++2023-6.0
CheckSynopsis="(Required) Block scope declarations shall not be visually ambiguous"
LongDesc="Found a nested declarator looking like an object declaration"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.0.2
Package=MISRAC++2023
Group=MISRAC++2023-6.0
CheckSynopsis="(Advisory) When an array with external linkage is declared, its size should be explicitly specified"
LongDesc="One or more external arrays are declared without their size being stated explicitly or defined implicitly by initialization."
Severity=Low
IdenticalTo=MISRAC++2008-3-1-3 MISRAC2004-8.12 MISRAC2012-Rule-8.11
Default=off
Visible=Yes

CheckName=MISRAC++2023-6.0.3
Package=MISRAC++2023
Group=MISRAC++2023-6.0
CheckSynopsis="(Advisory) The only declarations in the global namespace should be main, namespace declarations and extern C declarations"
LongDesc="Found a global declaration not being main, namespace or extern C."
Severity=Medium
IdenticalTo=MISRAC++2008-7-3-1
Default=off
Visible=Yes

CheckName=MISRAC++2023-6.0.4
Package=MISRAC++2023
Group=MISRAC++2023-6.0
CheckSynopsis="(Required) The identifier main shall not be used for a function other than the global function main."
LongDesc="Only the global main function shall be named "main"."
Severity=Medium
IdenticalTo=MISRAC++2008-7-3-2
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.2.1
Package=MISRAC++2023
Group=MISRAC++2023-6.2
CheckSynopsis="(Required) The one-definition rule shall not be violated"
LongDesc="Found entity with multiple definitions."
Severity=Low
IdenticalTo=MISRAC++2008-3-2-2
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.2.3_a
Package=MISRAC++2023
Group=MISRAC++2023-6.2
CheckSynopsis="(Required) The source code used to implement an entity shall appear only once"
LongDesc="Duplicate implementation of an entity found."
Severity=Medium
IdenticalTo=MISRAC2004-8.9 MISRAC2012-Rule-8.6 MISRAC++2008-3-2-4
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.2.3_b
Package=MISRAC++2023
Group=MISRAC++2023-6.2
CheckSynopsis="(Required) The source code used to implement an entity shall appear only once"
LongDesc="Duplicate implementation of an antity found."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.2.4_a
Package=MISRAC++2023
Group=MISRAC++2023-6.2
CheckSynopsis="(Required) A header file shall not contain definitions of functions or objects that are non-inline and have external linkage"
LongDesc="Found non inline definition with external linkage"
Severity=Medium
IdenticalTo=MISRAC++2008-3-1-1_a MISRAC2004-8.5_a
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.2.4_b
Package=MISRAC++2023
Group=MISRAC++2023-6.2
CheckSynopsis="(Required) A header file shall not contain definitions of functions or objects that are non-inline and have external linkage"
LongDesc="Found non inline definition with external linkage"
Severity=Medium
IdenticalTo=MISRAC++2008-3-1-1_b MISRAC2004-8.5_b
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.4.1
Package=MISRAC++2023
Group=MISRAC++2023-6.4
CheckSynopsis="(Required) A variable declared in an inner scope shall not hide a variable declared in an outer scope"
LongDesc="There are identifier names that are not distinct from other names in an outer scope."
Severity=Low
IdenticalTo=MISRAC++2008-2-10-2
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.4.2
Package=MISRAC++2023
Group=MISRAC++2023-6.4
CheckSynopsis="(Required) Derived classes shall not conceal functions that are inherited from their bases."
LongDesc="Found a concealing function in derived class."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.4.3
Package=MISRAC++2023
Group=MISRAC++2023-6.4
CheckSynopsis="(Required) A name that is present in a dependent base shall not be resolved by unqualified lookup"
LongDesc="Found a dependent base name without qualified lookup."
Severity=Medium
IdenticalTo=MISRAC++2008-14-6-1
Default=on
Visible=No

CheckName=MISRAC++2023-6.5.1
Package=MISRAC++2023
Group=MISRAC++2023-6.5
CheckSynopsis="(Advisory) A function or object with external linkage should be introduced in a header file"
LongDesc="Externally linked objects shall be declared in a header file."
Severity=Medium
IdenticalTo=MISRAC++2008-3-3-1
Default=off
Visible=Yes

CheckName=MISRAC++2023-6.5.2
Package=MISRAC++2023
Group=MISRAC++2023-6.5
CheckSynopsis="(Advisory) Internal linkage should be specified appropriately."
LongDesc="Internal linkage not specified appropriately"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-6.7.1
Package=MISRAC++2023
Group=MISRAC++2023-6.7
CheckSynopsis="(Required) Local variables shall not have static storage duration"
LongDesc="Found non-const variable with static storage duration"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.7.2
Package=MISRAC++2023
Group=MISRAC++2023-6.7
CheckSynopsis="(Required) Global variables shall not be used"
LongDesc="Found a global variable"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.8.2_a
Package=MISRAC++2023
Group=MISRAC++2023-6.8
CheckSynopsis="(Mandatory) A function must not return a reference or a pointer to a local variable with automatic storage duration"
LongDesc="A stack object is returned from a function as a reference."
Severity=High
IdenticalTo=MEM-stack-ref MISRAC++2008-7-5-1_a
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.8.2_b
Package=MISRAC++2023
Group=MISRAC++2023-6.8
CheckSynopsis="(Mandatory) A function must not return a reference or a pointer to a local variable with automatic storage duration"
LongDesc="A function might return an address on the stack."
Severity=High
IdenticalTo=MEM-stack MISRAC++2008-7-5-1_b MISRAC2004-17.6_a MISRAC2012-Rule-18.6_a CERT-DCL30-C_a
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.8.3_a
Package=MISRAC++2023
Group=MISRAC++2023-6.8
CheckSynopsis="(Required) An assignment operator shall not assign the address of an object with automatic storage duration to an object with a greater lifetime"
LongDesc="Detected a stack address stored in a global pointer."
Severity=High
IdenticalTo=MEM-stack-global MISRAC++2008-7-5-2_a MISRAC2004-17.6_b MISRAC2012-Rule-18.6_b CERT-DCL30-C_c
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.8.3_b
Package=MISRAC++2023
Group=MISRAC++2023-6.8
CheckSynopsis="(Required) An assignment operator shall not assign the address of an object with automatic storage duration to an object with a greater lifetime"
LongDesc="Detected a stack address in the field of a global struct."
Severity=High
IdenticalTo=MEM-stack-global-field MISRAC++2008-7-5-2_b MISRAC2004-17.6_c MISRAC2012-Rule-18.6_c CERT-DCL30-C_d
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.8.3_c
Package=MISRAC++2023
Group=MISRAC++2023-6.8
CheckSynopsis="(Required) An assignment operator shall not assign the address of an object with automatic storage duration to an object with a greater lifetime"
LongDesc="Detected a stack address stored in a parameter of pointer or array type."
Severity=High
IdenticalTo=MEM-stack-param MISRAC++2008-7-5-2_c MISRAC2004-17.6_d MISRAC2012-Rule-1.3_s MISRAC2012-Rule-18.6_d CERT-DCL30-C_e
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.8.3_d
Package=MISRAC++2023
Group=MISRAC++2023-6.8
CheckSynopsis="(Required) An assignment operator shall not assign the address of an object with automatic storage duration to an object with a greater lifetime"
LongDesc="Detected a stack address stored via a reference parameter."
Severity=High
IdenticalTo=MEM-stack-param-ref MISRAC++2008-7-5-2_d
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.8.4
Package=MISRAC++2023
Group=MISRAC++2023-6.8
CheckSynopsis="(Advisory) Member functions returning references to their object should be ref-qualified appropriately"
LongDesc="Member function is not appropriately ref-qualified"
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-6.9.1
Package=MISRAC++2023
Group=MISRAC++2023-6.9
CheckSynopsis="(Required) The same type aliases shall be used in all declarations of the same entity"
LongDesc="Different type alias used for same entity"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-6.9.2
Package=MISRAC++2023
Group=MISRAC++2023-6.9
CheckSynopsis="(Advisory) The names of the standard signed integer types and standard unsigned integer types should not be used"
LongDesc="There are uses of the basic types char, int, short, long, double, and float without a typedef."
Severity=Low
IdenticalTo=MISRAC++2008-3-9-2 MISRAC2004-6.3 MISRAC2012-Dir-4.6_a
Default=off
Visible=Yes

CheckName=MISRAC++2023-7.0.1
Package=MISRAC++2023
Group=MISRAC++2023-7.0
CheckSynopsis="(Required) There shall be no conversion from type bool"
LongDesc="Conversion from bool shall not be used"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-7.0.2
Package=MISRAC++2023
Group=MISRAC++2023-7.0
CheckSynopsis="(Required) There shall be no conversion to type bool"
LongDesc="Conversion to bool shall not be used"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-7.0.3
Package=MISRAC++2023
Group=MISRAC++2023-7.0
CheckSynopsis="(Required) The numerical value of a character shall not be used"
LongDesc="Numerical value of char types shall not be used"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-7.0.4
Package=MISRAC++2023
Group=MISRAC++2023-7.0
CheckSynopsis="(Required) The operands of bitwise operators and shift operators shall be appropriate"
LongDesc="Inappropriate operand to bitwise operator found"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-7.0.5
Package=MISRAC++2023
Group=MISRAC++2023-7.0
CheckSynopsis="(Required) Integral promotion and the usual arithmetic conversions shall not change the signedness or the type category of an operand"
LongDesc="One or more implicit integral conversions have been found that change the signedness of the underlying type."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-7.0.6_a
Package=MISRAC++2023
Group=MISRAC++2023-7.0
CheckSynopsis="(Required) Assignment between numeric types shall be appropriate"
LongDesc="Inappropriate assignment found causing implicit cast"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-7.0.6_b
Package=MISRAC++2023
Group=MISRAC++2023-7.0
CheckSynopsis="(Required) Assignment between numeric types shall be appropriate"
LongDesc="Inappropriate implicit argument cast found"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-7.11.1
Package=MISRAC++2023
Group=MISRAC++2023-7.11
CheckSynopsis="(Required) nullptr shall be the only form of the null-pointer-constant"
LongDesc="NULL or 0 used instead of nullptr"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-7.11.2
Package=MISRAC++2023
Group=MISRAC++2023-7.11
CheckSynopsis="(Required) An array passed as a function argument shall not decay to a pointer"
LongDesc="Found array decaying to pointer in function call"
Severity=Medium
IdenticalTo=MISRAC++2008-5-2-12
Default=on
Visible=Yes

CheckName=MISRAC++2023-7.11.3
Package=MISRAC++2023
Group=MISRAC++2023-7.11
CheckSynopsis="(Required) A conversion from function type to pointer-to-function type shall only occur in appropriate contexts"
LongDesc="Found inappropriate conversion from function type to pointer-to-function type"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.0.1
Package=MISRAC++2023
Group=MISRAC++2023-8.0
CheckSynopsis="(Advisory) Parentheses should be used to make the meaning of an expression appropriately explicit"
LongDesc="Parentheses to avoid implicit operator precedence are missing."
Severity=Medium
IdenticalTo=MISRAC++2008-5-0-2 MISRAC2004-12.1 MISRAC2012-Rule-12.1
Default=off
Visible=Yes

CheckName=MISRAC++2023-8.1.1
Package=MISRAC++2023
Group=MISRAC++2023-8.1
CheckSynopsis="(Required) A non-transient lambda shall not implicitly capture this"
LongDesc="When class member variables are used in a lambda, this must be explicitly captured."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.1.2
Package=MISRAC++2023
Group=MISRAC++2023-8.1
CheckSynopsis="(Advisory) Variables should be captured explicitly in a non-transient lambda"
LongDesc="Explicit capture of variables helps to clarify its dependencies"
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-8.2.1
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) A virtual base class shall only be cast to a derived class by means of dynamic_cast"
LongDesc="Use dynamic_cast to cast an object between a virtual base class and a derived class"
Severity=Medium
IdenticalTo=MISRAC++2008-5-2-2
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.2
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) C-style casts and functional notation casts shall not be used"
LongDesc="Old style casts (other than void casts) were found."
Severity=Medium
IdenticalTo=CAST-old-style MISRAC++2008-5-2-4
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.3
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) A cast shall not remove any const or volatile qualification from the type accessed via a pointer or by reference"
LongDesc="Casts that remove a const or volatile qualification were found."
Severity=Low
IdenticalTo=MISRAC++2008-5-2-5 MISRAC2004-11.5 MISRAC2012-Rule-11.8
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.4
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) Casts shall not be performed between a pointer to function and any other type"
LongDesc="A cast shall not convert a pointer to a function to any other pointer type, including a pointer to function type."
Severity=Medium
IdenticalTo=MISRAC++2008-5-2-6
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.5
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) reinterpret_cast shall not be used"
LongDesc="Use of reinterpret_cast may cause undefined behaviour"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.6
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) An object with integral, enumerated, or pointer to void type shall not be cast to a pointer type"
LongDesc="Casting from integral types to pointer types can lead to unspecified behavior"
Severity=Medium
IdenticalTo=MISRAC++2008-5-2-8
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.7
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Advisory) A cast should not convert a pointer type to an integral type"
LongDesc="A cast from a pointer type to an integral type was found."
Severity=Low
IdenticalTo=MISRAC++2008-5-2-9 MISRAC2004-11.3 MISRAC2012-Rule-11.4
Default=off
Visible=Yes

CheckName=MISRAC++2023-8.2.8
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) An object pointer type shall not be cast to an integral type other than std::uintptr_t or std:intptr_t"
LongDesc="Use designated standard types as these are the only types guaranteed to represent all possible object pointer values"
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.9
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) The operand to typeid shall not be an expression of polymorphic class type"
LongDesc="It is undefined whether such an expression is evaluated in runtime or not."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.10_a
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) Functions shall not call themselves, either directly or indirectly"
LongDesc="There are functions that call themselves directly."
Severity=Low
IdenticalTo=MISRAC++2008-7-5-4_a MISRAC2004-16.2_a MISRAC2012-Rule-17.2_a
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.10_b
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) Functions shall not call themselves, either directly or indirectly"
LongDesc="There are functions that call themselves indirectly."
Severity=Low
IdenticalTo=MISRAC++2008-7-5-4_b MISRAC2004-16.2_b MISRAC2012-Rule-17.2_b
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.2.11
Package=MISRAC++2023
Group=MISRAC++2023-8.2
CheckSynopsis="(Required) An argument passed via ellipsis shall have an appropriate type"
LongDesc="Ellipsis arguments shall not be of type class if it the class is not trivial.  A trivial class has no virtual members and no non trivial destructor, copy or move operators."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.3.1
Package=MISRAC++2023
Group=MISRAC++2023-8.3
CheckSynopsis="(Advisory) The built-in unary - operator should not be applied to an expression of unsigned type"
LongDesc="Uses of unary minus on unsigned expressions were found."
Severity=Low
IdenticalTo=MISRAC++2008-5-3-2 MISRAC2004-12.9 MISRAC2012-Rule-10.1_R8
Default=off
Visible=Yes

CheckName=MISRAC++2023-8.3.2
Package=MISRAC++2023
Group=MISRAC++2023-8.3
CheckSynopsis="(Advisory) The built-in unary + operator should not be used"
LongDesc="Unary + promotes to int or cause a lambda to decay to function pointer. Use static_cast instead."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-8.7.1_a
Package=MISRAC++2023
Group=MISRAC++2023-8.7
CheckSynopsis="(Required) Pointer arithmetic shall not form an invalid pointer"
LongDesc="This check only validates actual access, not the arithmetic operations. Array subscripts are checked on a per dimension basis so even if the memory access as such is valid this check will still output a message."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.7.1_b
Package=MISRAC++2023
Group=MISRAC++2023-8.7
CheckSynopsis="(Required) Pointer arithmetic shall not form an invalid pointer"
LongDesc="This check validates arithmetic operations.  In order to not cause too many false positives, it takes a conservative  approach and will not give a message if it is not obvious to the checker  that it is a violation."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.7.1_c
Package=MISRAC++2023
Group=MISRAC++2023-8.7
CheckSynopsis="(Required) Pointer arithmetic shall not form an invalid pointer"
LongDesc="This validates parameters in standard library calls."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.7.2
Package=MISRAC++2023
Group=MISRAC++2023-8.7
CheckSynopsis="(Required) Subtraction between pointers shall only be applied to pointers that address elements of the same array"
LongDesc="Subtracting pointers of different arrays may lead to undefined behaviour."
Severity=High
IdenticalTo=MISRAC++2008-5-0-17
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.9.1
Package=MISRAC++2023
Group=MISRAC++2023-8.9
CheckSynopsis="(Required) The built-in relational operators >, >=, < and <= shall not be applied to objects of pointer type, except where they point to elements of the same array"
LongDesc="Comparing pointers cause undefined behaviour if they do not point to the same object. Since C++14 one can use std::less etc for implementation defined behaviour."
Severity=High
IdenticalTo=MISRAC++2008-5-0-18
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.14.1
Package=MISRAC++2023
Group=MISRAC++2023-8.14
CheckSynopsis="(Advisory) The right-hand operand of a logical && or || operator should not contain persistent side effects"
LongDesc="There are right-hand operands of && or || operators that contain side effects."
Severity=Medium
IdenticalTo=MISRAC++2008-5-14-1 MISRAC2004-12.4 MISRAC2012-Rule-13.5
Default=off
Visible=Yes

CheckName=MISRAC++2023-8.18.1
Package=MISRAC++2023
Group=MISRAC++2023-8.18
CheckSynopsis="(Mandatory) An object or subobject must not be copied to an overlapping object"
LongDesc="There are assignments from one field of a union to another."
Severity=High
IdenticalTo=MISRAC++2008-0-2-1 MISRAC2004-18.2 MISRAC2012-Rule-19.1 UNION-overlap-assign
Default=on
Visible=Yes

CheckName=MISRAC++2023-8.18.2
Package=MISRAC++2023
Group=MISRAC++2023-8.18
CheckSynopsis="(Advisory) The result of an assignment operator should not be used"
LongDesc="One or more assignment operators are used in sub-expressions."
Severity=Low
IdenticalTo=MISRAC++2008-6-2-1 MISRAC2012-Rule-13.4_b
Default=off
Visible=Yes

CheckName=MISRAC++2023-8.19.1
Package=MISRAC++2023
Group=MISRAC++2023-8.19
CheckSynopsis="(Advisory) The comma operator should not be used"
LongDesc="There are uses of the comma operator."
Severity=Low
IdenticalTo=MISRAC++2008-5-18-1 MISRAC2004-12.10 MISRAC2012-Rule-12.3
Default=off
Visible=Yes

CheckName=MISRAC++2023-8.20.1
Package=MISRAC++2023
Group=MISRAC++2023-8.20
CheckSynopsis="(Advisory) An unsigned arithmetic operation with constant operands should not wrap"
LongDesc="A constant unsigned integer expression overflows."
Severity=Medium
IdenticalTo=EXPR-const-overflow MISRAC++2008-5-19-1 MISRAC2004-12.11 MISRAC2012-Rule-12.4
Default=off
Visible=Yes

CheckName=MISRAC++2023-9.2.1
Package=MISRAC++2023
Group=MISRAC++2023-9.2
CheckSynopsis="(Required) An explicit type conversion shall not be an expression statement"
LongDesc="A functionally notated type conversion as an expression can easily be mistaken for a scoped variable declaration."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.3.1_a
Package=MISRAC++2023
Group=MISRAC++2023-9.3
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be a compound-statement"
LongDesc="A do...while statement shall have a body"
Severity=Low
IdenticalTo=MISRAC++2008-6-3-1_a MISRAC2004-14.8_a MISRAC2012-Rule-15.6_a
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.3.1_b
Package=MISRAC++2023
Group=MISRAC++2023-9.3
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be a compound-statement"
LongDesc="A for statement shall have a body"
Severity=Low
IdenticalTo=MISRAC++2008-6-3-1_b MISRAC2004-14.8_b MISRAC2012-Rule-15.6_b
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.3.1_c
Package=MISRAC++2023
Group=MISRAC++2023-9.3
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be a compound-statement"
LongDesc="If and else statements shall have a body. The construct else if is allowed though."
Severity=Low
IdenticalTo=MISRAC++2008-6-4-1 MISRAC2004-14.9 MISRAC2012-Rule-15.6_c
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.3.1_d
Package=MISRAC++2023
Group=MISRAC++2023-9.3
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be a compound-statement"
LongDesc="A switch statement shall have a body"
Severity=Low
IdenticalTo=MISRAC++2008-6-3-1_c MISRAC2004-14.8_c MISRAC2012-Rule-15.6_d
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.3.1_e
Package=MISRAC++2023
Group=MISRAC++2023-9.3
CheckSynopsis="(Required) The body of an iteration-statement or a selection-statement shall be a compound-statement"
LongDesc="A while statement shall have a body"
Severity=Low
IdenticalTo=MISRAC++2008-6-3-1_d MISRAC2004-14.8_d MISRAC2012-Rule-15.6_e
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.4.1
Package=MISRAC++2023
Group=MISRAC++2023-9.4
CheckSynopsis="(Required) All if... elseif constructs shall be terminated with an else statement"
LongDesc="If ... else if constructs that are not terminated with an else clause were detected."
Severity=Low
IdenticalTo=MISRAC++2008-6-4-2 MISRAC2004-14.10 MISRAC2012-Rule-15.7
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.4.2_a
Package=MISRAC++2023
Group=MISRAC++2023-9.4
CheckSynopsis="(Required) The structure of a switch statement shall be appropriate"
LongDesc="Only simple declarations are allowed in switch condition statements."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.4.2_b
Package=MISRAC++2023
Group=MISRAC++2023-9.4
CheckSynopsis="(Required) The structure of a switch statement shall be appropriate"
LongDesc="Non-empty switch cases were found that are not terminated by a break."
Severity=Medium
IdenticalTo=MISRAC++2008-6-4-5 MISRAC2004-15.2 MISRAC2012-Rule-16.3
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.4.2_c
Package=MISRAC++2023
Group=MISRAC++2023-9.4
CheckSynopsis="(Required) The structure of a switch statement shall be appropriate"
LongDesc="Switch with a default clause that is not first or last."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-16.5
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.4.2_d
Package=MISRAC++2023
Group=MISRAC++2023-9.4
CheckSynopsis="(Required) The structure of a switch statement shall be appropriate"
LongDesc="One or more switch statements without a case clause were found."
Severity=Low
IdenticalTo=MISRAC++2008-6-4-8 MISRAC2004-15.5
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.4.2_e
Package=MISRAC++2023
Group=MISRAC++2023-9.4
CheckSynopsis="(Required) The structure of a switch statement shall be appropriate"
LongDesc="A switch statement without default statement or all values of an enumeraton listed."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.4.2_f
Package=MISRAC++2023
Group=MISRAC++2023-9.4
CheckSynopsis="(Required) The structure of a switch statement shall be appropriate"
LongDesc="Misplaced case label. Must be in the switch statements outmost block scope."
Severity=Medium
IdenticalTo=MISRAC++2008-6-4-4 MISRAC2012-Rule-16.2 MISRAC2004-15.1
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.5.1_a
Package=MISRAC++2023
Group=MISRAC++2023-9.5
CheckSynopsis="(Advisory) Legacy for statements should be simple"
LongDesc="Legacy for init-statement shall only declare and initialize a loop counter of integer type."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-9.5.1_b
Package=MISRAC++2023
Group=MISRAC++2023-9.5
CheckSynopsis="(Advisory) Legacy for statements should be simple"
LongDesc="A for condition shall only compare loop counter to a loop bound using a relational operator. The loop bound variable must also be of the same type or have a constant value that can be reached. Note that breaking 9.5.1_a is likely to break this check if the loop counter is not compliant."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-9.5.1_c
Package=MISRAC++2023
Group=MISRAC++2023-9.5
CheckSynopsis="(Advisory) Legacy for statements should be simple"
LongDesc="The increment or decrement of the loop variable must be simple (++, --, +=, -=) and constant"
Severity=Low
IdenticalTo=MISRAC++2008-6-5-4
Default=off
Visible=Yes

CheckName=MISRAC++2023-9.5.1_d
Package=MISRAC++2023
Group=MISRAC++2023-9.5
CheckSynopsis="(Advisory) Legacy for statements should be simple"
LongDesc="For loop controlling variables may not be modified or aliased to a non const pointer or reference. This check assumes an otherwise well formed for statement according to 9.5.1."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-9.5.2
Package=MISRAC++2023
Group=MISRAC++2023-9.5
CheckSynopsis="(Required) A for-range-initializer shall contain at most one function call"
LongDesc="Doing multiple calls may cause undefined behaviour regarding temporary object lifetime."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.6.1
Package=MISRAC++2023
Group=MISRAC++2023-9.6
CheckSynopsis="(Advisory) The goto statement should not be used"
LongDesc="Use of the goto statement found."
Severity=Low
IdenticalTo=MISRAC2004-14.4 MISRAC2012-Rule-15.1
Default=off
Visible=Yes

CheckName=MISRAC++2023-9.6.2
Package=MISRAC++2023
Group=MISRAC++2023-9.6
CheckSynopsis="(Required) The goto statement shall jump to a label declared later in the function body"
LongDesc="The destination of a goto statement is a nested code block."
Severity=Low
IdenticalTo=MISRAC++2008-6-6-1 MISRAC2012-Rule-15.3
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.6.3
Package=MISRAC++2023
Group=MISRAC++2023-9.6
CheckSynopsis="(Required) The goto statement shall jump to a label declared later in the function body"
LongDesc="A goto statement is declared after the destination label."
Severity=Low
IdenticalTo=MISRAC++2008-6-6-2 MISRAC2012-Rule-15.2
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.6.4
Package=MISRAC++2023
Group=MISRAC++2023-9.6
CheckSynopsis="(Required) A function declared with the [[noreturn]] attribute shall not return"
LongDesc="A function with a [[noreturn]] function specifier returns."
Severity=Low
IdenticalTo=MISRAC2012-Rule-17.9
Default=on
Visible=Yes

CheckName=MISRAC++2023-9.6.5
Package=MISRAC++2023
Group=MISRAC++2023-9.6
CheckSynopsis="(Required) A function with non-void return type shall return a value on all paths"
LongDesc="For some execution paths, no return statements are executed in functions with a non-void return type."
Severity=Medium
IdenticalTo=MISRAC++2008-8-4-3 MISRAC2004-16.8 MISRAC2012-Rule-17.4 SPC-return
Default=on
Visible=Yes

CheckName=MISRAC++2023-10.0.1
Package=MISRAC++2023
Group=MISRAC++2023-10.0
CheckSynopsis="(Advisory) A declaration should not declare more than one variable or member variable"
LongDesc="Multiple variables in a single declaration may cause a developer to misinterpret  code when it comes to the type of such variables"
Severity=Low
IdenticalTo=CERT-DCL04-C MISRAC++2008-8-0-1
Default=off
Visible=Yes

CheckName=MISRAC++2023-10.1.1
Package=MISRAC++2023
Group=MISRAC++2023-10.1
CheckSynopsis="(Advisory) The target type of a pointer or lvalue reference parameter should be const-qualified appropriately"
LongDesc="A parameter in a function that is not modified by the function is not const qualified."
Severity=Low
IdenticalTo=MISRAC++2008-7-1-2 MISRAC2004-16.7
Default=off
Visible=Yes

CheckName=MISRAC++2023-10.1.2
Package=MISRAC++2023
Group=MISRAC++2023-10.1
CheckSynopsis="(Required) The volatile qualifier shall be used appropriately"
LongDesc="Declaring local variables, parameters, return types, member functions or  structured bindings can cause behaviour that is not well defined or well understood."
Severity=High
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-10.2.1
Package=MISRAC++2023
Group=MISRAC++2023-10.2
CheckSynopsis="(Required) An enumeration shall be defined with an explicit underlying type"
LongDesc="Using an explicit underlying type ensures that the type is obvious to the user  and not implicit int or implementation defined."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-10.2.2
Package=MISRAC++2023
Group=MISRAC++2023-10.2
CheckSynopsis="(Advisory) Unscoped enumerations should not be declared"
LongDesc="Unscoped enumerations may hide entities declared in an outer scope leading to confusion. It is allowed to have an unscoped enumeration as a class member."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-10.2.3
Package=MISRAC++2023
Group=MISRAC++2023-10.2
CheckSynopsis="(Required) The numeric value of an unscoped enumeration with no fixed underlying type shall not be used"
LongDesc="When the underlying type is not specified, the type is implementation defined which can lead to unexpected conversions."
Severity=Low
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-10.3.1
Package=MISRAC++2023
Group=MISRAC++2023-10.3
CheckSynopsis="(Advisory) There should be no unnamed namespaces in header files"
LongDesc="Any entity declared in an anonymous namespace in a header file  will be different in different translation units which may be unexpected."
Severity=Medium
IdenticalTo=MISRAC++2008-7-3-3
Default=off
Visible=Yes

CheckName=MISRAC++2023-10.4.1
Package=MISRAC++2023
Group=MISRAC++2023-10.4
CheckSynopsis="(Required) The asm declaration shall not be used"
LongDesc="Any use of assembly language introduce implementation defined behaviour."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-11.3.1
Package=MISRAC++2023
Group=MISRAC++2023-11.3
CheckSynopsis="(Advisory) Variables of array type should not be declared"
LongDesc="Variables of array type does not have value semantics  and need to have their size managed manually."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-11.3.2
Package=MISRAC++2023
Group=MISRAC++2023-11.3
CheckSynopsis="(Advisory) The declaration of an object should contain no more than two levels of pointer indirection"
LongDesc="Declarations that contain more than two levels of pointer indirection have been found."
Severity=Low
IdenticalTo=MISRAC++2008-5-0-19 MISRAC2004-17.5 MISRAC2012-Rule-18.5
Default=off
Visible=Yes

CheckName=MISRAC++2023-11.6.1
Package=MISRAC++2023
Group=MISRAC++2023-11.6
CheckSynopsis="(Advisory) All variables should be initialized"
LongDesc="Variables should be explicitly initialized with an associated initializer in their definition. Exceptions are variables that are implicitly zero initialized (static), class type variables  and function parameters."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-11.6.2
Package=MISRAC++2023
Group=MISRAC++2023-11.6
CheckSynopsis="(Mandatory) The value of an object must not be read before it has been set"
LongDesc="In some execution paths, variables might be read before they are assigned a value."
Severity=High
IdenticalTo=MISRAC++2008-8-5-1_b MISRAC2004-9.1_b MISRAC2012-Rule-1.3_k MISRAC2012-Rule-9.1_f SPC-uninit-var-some
Default=on
Visible=Yes

CheckName=MISRAC++2023-11.6.3
Package=MISRAC++2023
Group=MISRAC++2023-11.6
CheckSynopsis="(Required) Within an enumerator list, the value of an implicitly-specified enumeration constant shall be unique"
LongDesc="A duplicated implicit enumeration constant was found."
Severity=Medium
IdenticalTo=MISRAC2012-Rule-8.12
Default=on
Visible=Yes

CheckName=MISRAC++2023-12.2.1
Package=MISRAC++2023
Group=MISRAC++2023-12.2
CheckSynopsis="(Advisory) Bit-fields should not be declared"
LongDesc="Bit-fields has a number of implementation defined aspects and should thus be avoided."
Severity=Low
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-12.2.2
Package=MISRAC++2023
Group=MISRAC++2023-12.2
CheckSynopsis="(Required) A bit-field shall have an appropriate type"
LongDesc="Types with implementation defined sign like char or enums without underlying type  shall not be used for bit-fields to avoid implementation defined behavior."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-12.2.3
Package=MISRAC++2023
Group=MISRAC++2023-12.2
CheckSynopsis="(Required) A named bit-field with signed integer type shall not have a length of one bit"
LongDesc="Signed single-bit bitfields (excluding anonymous fields) were found."
Severity=Low
IdenticalTo=MISRAC++2008-9-6-4 MISRAC2004-6.5 MISRAC2012-Rule-6.2 STRUCT-signed-bit
Default=on
Visible=Yes

CheckName=MISRAC++2023-12.3.1
Package=MISRAC++2023
Group=MISRAC++2023-12.3
CheckSynopsis="(Required) The union keyword shall not be used"
LongDesc="Unions were found."
Severity=Low
IdenticalTo=MISRAC++2008-9-5-1 MISRAC2004-18.4 MISRAC2012-Rule-19.2
Default=on
Visible=Yes

CheckName=MISRAC++2023-13.1.1
Package=MISRAC++2023
Group=MISRAC++2023-13.1
CheckSynopsis="(Advisory) Classes should not be inherited virtually"
LongDesc="Virtual inheritance introduces potentially confusing  behaviour as call by dominance and base class  initialization order changes"
Severity=Low
IdenticalTo=MISRAC++2008-10-1-1
Default=off
Visible=Yes

CheckName=MISRAC++2023-13.1.2
Package=MISRAC++2023
Group=MISRAC++2023-13.1
CheckSynopsis="(Required) An accessible base class shall not be both virtual and non-virtual in the same hierarchy"
LongDesc="This makes it confusing whether the intent is to have the base object instantiated one or more times."
Severity=Medium
IdenticalTo=MISRAC++2008-10-1-3
Default=on
Visible=Yes

CheckName=MISRAC++2023-13.3.1
Package=MISRAC++2023
Group=MISRAC++2023-13.3
CheckSynopsis="(Required) User-declared member functions shall use the virtual, override and final specifiers appropriately"
LongDesc="A non static member function shall either use no specifier or  the virtual specifier if it is not overriding a base class member.  If it overrides a base member it shall use the final or override specifier."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-13.3.2
Package=MISRAC++2023
Group=MISRAC++2023-13.3
CheckSynopsis="(Required) Parameters in an overriding virtual function shall not specify different default arguments"
LongDesc="Using different default vales might be confusing for the user of the class.  Value must either be same constant, which must be specified in base class  function, or not specified."
Severity=Medium
IdenticalTo=MISRAC++2008-8-3-1
Default=on
Visible=Yes

CheckName=MISRAC++2023-13.3.3_a
Package=MISRAC++2023
Group=MISRAC++2023-13.3
CheckSynopsis="(Required) The parameters in all declarations or overrides of a function shall either be unnamed or have identical names"
LongDesc="Different names of the same parameter can lead to confusion when reading the code."
Severity=Medium
IdenticalTo=MISRAC2004-16.4 MISRAC++2008-8-4-2_a
Default=on
Visible=Yes

CheckName=MISRAC++2023-13.3.3_b
Package=MISRAC++2023
Group=MISRAC++2023-13.3
CheckSynopsis="(Required) The parameters in all declarations or overrides of a function shall either be unnamed or have identical names"
LongDesc="Different names of the same parameter can lead to confusion when reading the code."
Severity=Medium
IdenticalTo=MISRAC++2008-8-4-2_b
Default=on
Visible=Yes

CheckName=MISRAC++2023-13.3.4
Package=MISRAC++2023
Group=MISRAC++2023-13.3
CheckSynopsis="(Required) A comparison of a potentially virtual pointer to member function shall only be with nullptr"
LongDesc="The result of such a comparison with anything else is unspecified."
Severity=Medium
IdenticalTo=
Default=on
Visible=Yes

CheckName=MISRAC++2023-14.1.1
Package=MISRAC++2023
Group=MISRAC++2023-14.1
CheckSynopsis="(Advisory) Non-static data members should be either all private or all public"
LongDesc="A mix of private and public members means that the encapsulation of  data for class becomes unclear. This also goes for protected which is not  allowed either."
Severity=Medium
IdenticalTo=
Default=off
Visible=Yes

CheckName=MISRAC++2023-15.1.1_a
Package=MISRAC++2023
Group=MISRAC++2023-15.1
CheckSynopsis="(Required) An object's dynamic type shall not be used from within its constructor or destructor"
LongDesc="A virtual member function is called in a class constructor."
Severity=Medium
IdenticalTo=CPU-ctor-call-virt MISRAC++2008-12-1-1_a
Default=on
Visible=Yes

CheckName=MISRAC++2023-15.1.1_b
Package=MISRAC++2023
Group=MISRAC++2023-15.1
CheckSynopsis="(Required) An object's dynamic type shall not be used from within its constructor or destructor"
LongDesc="A virtual member function is called in a class destructor."
Severity=Medium
IdenticalTo=CPU-dtor-call-virt MISRAC++2008-12-1-1_b
Default=on
Visible=Yes

CheckName=MISRAC++2023-15.1.3
Package=MISRAC++2023
Group=MISRAC++2023-15.1
CheckSynopsis="(Required) Conversion operators and constructors that are callable with a single argument shall be explicit"
LongDesc="Constructors that can be called with a single argument of fundamental type are not declared explicit. Conversion operators shall also be set explicit."
Severity=Low
IdenticalTo=CPU-ctor-implicit MISRAC++2008-12-1-3
Default=on
Visible=Yes

CheckName=MISRAC++2023-16.5.1
Package=MISRAC++2023
Group=MISRAC++2023-16.5
CheckSynopsis="(Required) The logical AND and logical OR operators shall not be overloaded"
LongDesc="Overloaded && and || operators were found."
Severity=Low
IdenticalTo=LOGIC-overload MISRAC++2008-5-2-11_a
Default=on
Visible=Yes

CheckName=MISRAC++2023-16.5.2
Package=MISRAC++2023
Group=MISRAC++2023-16.5
CheckSynopsis="(Required) The address-of operator shall not be overloaded"
LongDesc="Occurances of overloaded & operators were found."
Severity=Low
IdenticalTo=MISRAC++2008-5-3-3 PTR-overload
Default=on
Visible=Yes

CheckName=MISRAC++2023-18.1.1
Package=MISRAC++2023
Group=MISRAC++2023-18.1
CheckSynopsis="(Required) An exception object shall not have pointer type"
LongDesc="Throw of exceptions by pointer."
Severity=Medium
IdenticalTo=MISRAC++2008-15-0-2 THROW-ptr
Default=on
Visible=Yes

CheckName=MISRAC++2023-18.1.2
Package=MISRAC++2023
Group=MISRAC++2023-18.1
CheckSynopsis="(Required) An empty throw shall only occur within the compound-statement of a catch handler"
LongDesc="Unsafe rethrow of exception."
Severity=Medium
IdenticalTo=MISRAC++2008-15-1-3 THROW-empty
Default=on
Visible=Yes

CheckName=MISRAC++2023-18.3.1
Package=MISRAC++2023
Group=MISRAC++2023-18.3
CheckSynopsis="(Advisory) There should be at least one exception handler to catch all otherwise unhandled exceptions"
LongDesc="A main does not have a default exception handler that will catch exceptions. Without this, an unhandled exception might lead to termination in an implementation-defined manner."
Severity=Medium
IdenticalTo=MISRAC++2008-15-3-2 THROW-main
Default=off
Visible=Yes

CheckName=MISRAC++2023-18.3.2
Package=MISRAC++2023
Group=MISRAC++2023-18.3
CheckSynopsis="(Required) An exception of class type shall be caught by const reference or reference"
LongDesc="Exception objects are caught by value, not by reference."
Severity=Medium
IdenticalTo=CATCH-object-slicing MISRAC++2008-15-3-5
Default=on
Visible=Yes

CheckName=MISRAC++2023-18.3.3
Package=MISRAC++2023
Group=MISRAC++2023-18.3
CheckSynopsis="(Required) Handlers for a function-try-block of a constructor or destructor shall not refer to non-static members from their class or its bases"
LongDesc="One or more exception handlers in a constructor or destructor accesses a non-static member variable that might not exist."
Severity=Medium
IdenticalTo=CATCH-xtor-bad-member MISRAC++2008-15-3-3
Default=on
Visible=Yes

CheckName=MISRAC++2023-19.0.2
Package=MISRAC++2023
Group=MISRAC++2023-19.0
CheckSynopsis="(Required) Function-like macros shall not be defined"
LongDesc="Definitions of function-like macros were found."
Severity=Low
IdenticalTo=MISRAC++2008-16-0-4 MISRAC2004-19.7 MISRAC2012-Dir-4.9
Default=on
Visible=Yes

CheckName=MISRAC++2023-19.0.3
Package=MISRAC++2023
Group=MISRAC++2023-19.0
CheckSynopsis="(Advisory) #include directives should only be preceded by preprocessor directives or comments"
LongDesc="#include directives were found that are not first in the source file."
Severity=Low
IdenticalTo=MISRAC++2008-16-0-1 MISRAC2004-19.1 MISRAC2012-Rule-20.1
Default=off
Visible=Yes

CheckName=MISRAC++2023-19.2.1
Package=MISRAC++2023
Group=MISRAC++2023-19.2
CheckSynopsis="(Required) Precautions shall be taken in order to prevent the contents of a header file being included more than once"
LongDesc="Header files without #include guards were found."
Severity=Low
IdenticalTo=MISRAC++2008-16-2-3 MISRAC2004-19.15 MISRAC2012-Dir-4.10
Default=on
Visible=Yes

CheckName=MISRAC++2023-19.2.3
Package=MISRAC++2023
Group=MISRAC++2023-19.2
CheckSynopsis="(Required) The ' or" or \\ characters and the /* or // character sequences shall not occur in a header file name"
LongDesc="There are illegal characters in header file names."
Severity=Low
IdenticalTo=MISRAC++2008-16-2-4
Default=on
Visible=Yes

CheckName=MISRAC++2023-19.3.1
Package=MISRAC++2023
Group=MISRAC++2023-19.3
CheckSynopsis="(Advisory) The # and ## preprocessor operators should not be used"
LongDesc="# and ## operators were found in macro definitions."
Severity=Low
IdenticalTo=MISRAC++2008-16-3-2 MISRAC2004-19.13 MISRAC2012-Rule-20.10
Default=off
Visible=Yes

CheckName=MISRAC++2023-19.3.4
Package=MISRAC++2023
Group=MISRAC++2023-19.3
CheckSynopsis="(Required) Parentheses shall be used to ensure macro arguments are expanded appropriately"
LongDesc="An expansion of macro parameters was found that is not enclosed in parentheses."
Severity=High
IdenticalTo=MISRAC2012-Rule-20.7
Default=on
Visible=Yes

CheckName=MISRAC++2023-19.3.5_a
Package=MISRAC++2023
Group=MISRAC++2023-19.3
CheckSynopsis="(Required) Tokens that look like a preprocessing directive shall not occur within a macro argument"
LongDesc="A preprocessing directive was found within a macro argument."
Severity=High
IdenticalTo=CERT-PRE32-C_a MISRAC2012-Rule-20.6_a
Default=on
Visible=Yes

CheckName=MISRAC++2023-19.3.5_b
Package=MISRAC++2023
Group=MISRAC++2023-19.3
CheckSynopsis="(Required) Tokens that look like a preprocessing directive shall not occur within a macro argument"
LongDesc="A preprocessing directive was found within a macro argument."
Severity=High
IdenticalTo=CERT-PRE32-C_b MISRAC2012-Rule-20.6_b
Default=on
Visible=Yes

CheckName=MISRAC++2023-21.2.1
Package=MISRAC++2023
Group=MISRAC++2023-21.2
CheckSynopsis="(Required) The library functions atof, atoi, atol and atoll from <cstdlib> shall not be used"
LongDesc="Uses of atof, atoi, atol and atoll were found."
Severity=Low
IdenticalTo=MISRAC++2008-18-0-2 MISRAC2004-20.10 MISRAC2012-Rule-21.7
Default=on
Visible=Yes

CheckName=MISRAC++2023-21.2.4
Package=MISRAC++2023
Group=MISRAC++2023-21.2
CheckSynopsis="(Required) The macro offsetof shall not be used"
LongDesc="Uses of the built-in function offsetof were found."
Severity=Low
IdenticalTo=MISRAC++2008-18-2-1 MISRAC2004-20.6
Default=on
Visible=Yes

CheckName=MISRAC++2023-21.6.1_a
Package=MISRAC++2023
Group=MISRAC++2023-21.6
CheckSynopsis="(Advisory) Dynamic memory should not be used"
LongDesc="Uses of new, delete malloc, calloc, realloc, or free were found."
Severity=Low
IdenticalTo=MISRAC++2008-18-4-1 MISRAC2004-20.4 MISRAC2012-Rule-21.3
Default=off
Visible=Yes

CheckName=MISRAC++2023-21.10.3
Package=MISRAC++2023
Group=MISRAC++2023-21.10
CheckSynopsis="(Required) The facilities provided by the standard header file <csignal> shall not be used"
LongDesc="Uses of <csignal> were found."
Severity=Low
IdenticalTo=MISRAC++2008-18-7-1 MISRAC2004-20.8 MISRAC2012-Rule-21.5
Default=on
Visible=Yes

CheckName=MISRAC++2023-30.0.1
Package=MISRAC++2023
Group=MISRAC++2023-30.0
CheckSynopsis="(Required) The C Library input/output functions shall not be used"
LongDesc="Uses of stdio.h were found."
Severity=Low
IdenticalTo=MISRAC++2008-27-0-1 MISRAC2004-20.9 MISRAC2012-Rule-21.6
Default=on
Visible=Yes

===============================
Packages
===============================

PackageName=STDCHECKS
PackageSynopsis="C-STAT specific checks"
PackageGroups=ARR ATH CAST CATCH COMMA COMMENT CONCURRENCY CONST COP CPU DECL DEFINE ENUM EXP EXPR FPT FUNC INCLUDE INT ITR LIB LOGIC MEM POR PTR RED RESOURCE SEM SIZEOF SPC STR STRUCT SWITCH THROW UNION
PackageDefault=on

PackageName=CERT
PackageSynopsis="Checks based on the CERT standard"
PackageGroups=CERT-ARR CERT-DCL CERT-ENV CERT-ERR CERT-EXP CERT-FIO CERT-FLP CERT-INT CERT-MEM CERT-MSC CERT-PRE CERT-SIG CERT-STR CERT-STYLE
PackageDefault=off

PackageName=SECURITY
PackageSynopsis="Checks based on the CWE standard"
PackageGroups=SEC-BUFFER SEC-DIV-0 SEC-EXECUTION SEC-FILEOP SEC-INJECTION SEC-LOOP SEC-NULL SEC-STRING
PackageDefault=off

PackageName=MISRAC2004
PackageSynopsis="Checks based on the MISRA C:2004 standard"
PackageGroups=MISRAC2004-1 MISRAC2004-2 MISRAC2004-4 MISRAC2004-5 MISRAC2004-6 MISRAC2004-7 MISRAC2004-8 MISRAC2004-9 MISRAC2004-10 MISRAC2004-11 MISRAC2004-12 MISRAC2004-13 MISRAC2004-14 MISRAC2004-15 MISRAC2004-16 MISRAC2004-17 MISRAC2004-18 MISRAC2004-19 MISRAC2004-20
PackageDefault=off

PackageName=MISRAC2012
PackageSynopsis="Checks based on the MISRA C:2012/2023 standard"
PackageGroups=MISRAC2012-Dir-4 MISRAC2012-Rule-1 MISRAC2012-Rule-2 MISRAC2012-Rule-3 MISRAC2012-Rule-4 MISRAC2012-Rule-5 MISRAC2012-Rule-6 MISRAC2012-Rule-7 MISRAC2012-Rule-8 MISRAC2012-Rule-9 MISRAC2012-Rule-10 MISRAC2012-Rule-11 MISRAC2012-Rule-12 MISRAC2012-Rule-13 MISRAC2012-Rule-14 MISRAC2012-Rule-15 MISRAC2012-Rule-16 MISRAC2012-Rule-17 MISRAC2012-Rule-18 MISRAC2012-Rule-19 MISRAC2012-Rule-20 MISRAC2012-Rule-21 MISRAC2012-Rule-22 MISRAC2012-Rule-23
PackageDefault=off

PackageName=MISRAC++2008
PackageSynopsis="Checks based on the MISRA C++:2008 standard"
PackageGroups=MISRAC++2008-0-1 MISRAC++2023-0.2 MISRAC++2008-0-2 MISRAC++2008-0-3 MISRAC++2008-2-3 MISRAC++2008-2-7 MISRAC++2008-2-10 MISRAC++2008-2-13 MISRAC++2008-3-1 MISRAC++2008-3-2 MISRAC++2008-3-9 MISRAC++2008-4-5 MISRAC++2008-5-0 MISRAC++2008-5-2 MISRAC++2023-5.2 MISRAC++2008-5-3 MISRAC++2008-5-8 MISRAC++2008-5-14 MISRAC++2008-5-18 MISRAC++2008-5-19 MISRAC++2008-6-2 MISRAC++2008-6-3 MISRAC++2008-6-4 MISRAC++2008-6-5 MISRAC++2008-6-6 MISRAC++2008-7-1 MISRAC++2008-7-2 MISRAC++2008-7-3 MISRAC++2008-7-4 MISRAC++2008-7-5 MISRAC++2008-8-0 MISRAC++2008-8-3 MISRAC++2008-8-4 MISRAC++2008-8-5 MISRAC++2008-9-3 MISRAC++2008-9-5 MISRAC++2008-9-6 MISRAC++2008-10-1 MISRAC++2008-12-1 MISRAC++2008-14-6 MISRAC++2008-15-0 MISRAC++2008-15-1 MISRAC++2008-15-3 MISRAC++2008-15-5 MISRAC++2008-16-0 MISRAC++2008-16-2 MISRAC++2008-16-3 MISRAC++2008-17-0 MISRAC++2008-18-0 MISRAC++2008-18-2 MISRAC++2008-18-4 MISRAC++2008-18-7 MISRAC++2008-19-3 MISRAC++2008-27-0
PackageDefault=off

PackageName=MISRAC++2023
PackageSynopsis="Checks based on the MISRA C++:2023 standard"
PackageGroups=MISRAC++2023-0.0 MISRAC++2023-0.1 MISRAC++2023-0.2 MISRAC++2023-4.1 MISRAC++2023-5.7 MISRAC++2023-5.10 MISRAC++2023-5.13 MISRAC++2023-6.0 MISRAC++2023-6.2 MISRAC++2023-6.4 MISRAC++2023-6.5 MISRAC++2023-6.7 MISRAC++2023-6.8 MISRAC++2023-6.9 MISRAC++2023-7.0 MISRAC++2023-7.11 MISRAC++2023-8.0 MISRAC++2023-8.1 MISRAC++2023-8.2 MISRAC++2023-8.3 MISRAC++2023-8.7 MISRAC++2023-8.9 MISRAC++2023-8.14 MISRAC++2023-8.18 MISRAC++2023-8.19 MISRAC++2023-8.20 MISRAC++2023-9.2 MISRAC++2023-9.3 MISRAC++2023-9.4 MISRAC++2023-9.5 MISRAC++2023-9.6 MISRAC++2023-10.0 MISRAC++2023-10.1 MISRAC++2023-10.2 MISRAC++2023-10.3 MISRAC++2023-10.4 MISRAC++2023-11.3 MISRAC++2023-11.6 MISRAC++2023-12.2 MISRAC++2023-12.3 MISRAC++2023-13.1 MISRAC++2023-13.3 MISRAC++2023-14.1 MISRAC++2023-15.1 MISRAC++2023-16.5 MISRAC++2023-18.1 MISRAC++2023-18.3 MISRAC++2023-19.0 MISRAC++2023-19.2 MISRAC++2023-19.3 MISRAC++2023-21.2 MISRAC++2023-21.6 MISRAC++2023-21.10 MISRAC++2023-30.0
PackageDefault=off


===============================
Groups
===============================

GroupName=ARR
GroupSynopsis="Array bounds"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=ATH
GroupSynopsis="Arithmetic errors"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=CAST
GroupSynopsis="Type casts"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=CATCH
GroupSynopsis="Exception handling"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=COMMA
GroupSynopsis="Comma usage"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=COMMENT
GroupSynopsis="Comments"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=CONCURRENCY
GroupSynopsis="Concurrency"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=CONST
GroupSynopsis="Const correctness"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=COP
GroupSynopsis="C++ copy control"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=CPU
GroupSynopsis="C++ usage"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=DECL
GroupSynopsis="Declarations and Definitions"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=DEFINE
GroupSynopsis="#define usage"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=ENUM
GroupSynopsis="Enumerations"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=EXP
GroupSynopsis="Potentially unexpected behavior"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=EXPR
GroupSynopsis="Expressions"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=FPT
GroupSynopsis="Function pointer usage"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=FUNC
GroupSynopsis="Functions"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=INCLUDE
GroupSynopsis="#include usage"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=INT
GroupSynopsis="Integers"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=ITR
GroupSynopsis="C++ iterator misuse"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=LIB
GroupSynopsis="Library function usage"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=LOGIC
GroupSynopsis="Logical operators"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=MEM
GroupSynopsis="Memory usage"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=POR
GroupSynopsis="Cross-architecture portability"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=PTR
GroupSynopsis="Pointer misuse"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=RED
GroupSynopsis="Redundant code"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=RESOURCE
GroupSynopsis="Resources"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=SEM
GroupSynopsis="Violation of semantic attributes"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=SIZEOF
GroupSynopsis="Sizeof expressions"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=SPC
GroupSynopsis="Unspecified behavior"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=STR
GroupSynopsis="Strings"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=STRUCT
GroupSynopsis="Structures"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=SWITCH
GroupSynopsis="Switch statements"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=THROW
GroupSynopsis="Exception raising"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=UNION
GroupSynopsis="Unions"
GroupPackage=STDCHECKS
GroupDefault=on

GroupName=CERT-ARR
GroupSynopsis="Arrays"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-DCL
GroupSynopsis="Declarations and Initialization"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-ENV
GroupSynopsis="Environment"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-ERR
GroupSynopsis="Error Handling"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-EXP
GroupSynopsis="Expressions"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-FIO
GroupSynopsis="Input Output"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-FLP
GroupSynopsis="Floating Point"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-INT
GroupSynopsis="Integers"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-MEM
GroupSynopsis="Memory Management"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-MSC
GroupSynopsis="Miscellaneous"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-PRE
GroupSynopsis="Preprocessor"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-SIG
GroupSynopsis="Signals"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-STR
GroupSynopsis="Characters and Strings"
GroupPackage=CERT
GroupDefault=on

GroupName=CERT-STYLE
GroupSynopsis="Style Checks"
GroupPackage=CERT
GroupDefault=on

GroupName=SEC-BUFFER
GroupSynopsis="Buffer Vulnerabilities"
GroupPackage=SECURITY
GroupDefault=on

GroupName=SEC-DIV-0
GroupSynopsis="Division By Zero"
GroupPackage=SECURITY
GroupDefault=on

GroupName=SEC-EXECUTION
GroupSynopsis="Arbitrary Code Execution"
GroupPackage=SECURITY
GroupDefault=on

GroupName=SEC-FILEOP
GroupSynopsis="File Operation Vulnerabilities"
GroupPackage=SECURITY
GroupDefault=on

GroupName=SEC-INJECTION
GroupSynopsis="Data Injection"
GroupPackage=SECURITY
GroupDefault=on

GroupName=SEC-LOOP
GroupSynopsis="Looping Vulnerabilities"
GroupPackage=SECURITY
GroupDefault=on

GroupName=SEC-NULL
GroupSynopsis="NULL Pointer Vulnerabilities"
GroupPackage=SECURITY
GroupDefault=on

GroupName=SEC-STRING
GroupSynopsis="String Errors"
GroupPackage=SECURITY
GroupDefault=on

GroupName=MISRAC2004-1
GroupSynopsis="Environment"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-2
GroupSynopsis="Language Extensions"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-4
GroupSynopsis="Character Sets"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-5
GroupSynopsis="Identifiers"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-6
GroupSynopsis="Types"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-7
GroupSynopsis="Constants"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-8
GroupSynopsis="Declarations and Definitions"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-9
GroupSynopsis="Initialization"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-10
GroupSynopsis="Arithmetic Type Conversions"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-11
GroupSynopsis="Pointer Type Conversions"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-12
GroupSynopsis="Expressions"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-13
GroupSynopsis="Control Statement Expressions"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-14
GroupSynopsis="Control Flow"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-15
GroupSynopsis="Switch Statements"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-16
GroupSynopsis="Functions"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-17
GroupSynopsis="Pointers and Arrays"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-18
GroupSynopsis="Structures and Unions"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-19
GroupSynopsis="Preprocessing directives"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2004-20
GroupSynopsis="Standard Libraries"
GroupPackage=MISRAC2004
GroupDefault=on

GroupName=MISRAC2012-Dir-4
GroupSynopsis="Code design"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-1
GroupSynopsis="A standard C environment"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-2
GroupSynopsis="Unused code"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-3
GroupSynopsis="Comments"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-4
GroupSynopsis="Character sets and lexical conventions"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-5
GroupSynopsis="Identifiers"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-6
GroupSynopsis="Types"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-7
GroupSynopsis="Literals and constants"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-8
GroupSynopsis="Declarations and definitions"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-9
GroupSynopsis="Initialization"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-10
GroupSynopsis="The essential type model"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-11
GroupSynopsis="Pointer type conversions"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-12
GroupSynopsis="Expressions"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-13
GroupSynopsis="Side effects"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-14
GroupSynopsis="Control statement expressions"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-15
GroupSynopsis="Control flow"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-16
GroupSynopsis="Switch statements"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-17
GroupSynopsis="Functions"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-18
GroupSynopsis="Pointers and arrays"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-19
GroupSynopsis="Overlapping storage"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-20
GroupSynopsis="Preprocessing directives"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-21
GroupSynopsis="Standard libraries"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-22
GroupSynopsis="Resources"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC2012-Rule-23
GroupSynopsis="Generic selections"
GroupPackage=MISRAC2012
GroupDefault=on

GroupName=MISRAC++2008-0-1
GroupSynopsis="Unnecessary constructs"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2023-0.2
GroupSynopsis=""
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-0-2
GroupSynopsis="Storage"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-0-3
GroupSynopsis="Runtime failures"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-2-3
GroupSynopsis="Trigraph sequences"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-2-7
GroupSynopsis="Comments"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-2-10
GroupSynopsis="Identifiers"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-2-13
GroupSynopsis="Literals"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-3-1
GroupSynopsis="Declarations and definitions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-3-2
GroupSynopsis="One Definition Rule"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-3-9
GroupSynopsis="Types"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-4-5
GroupSynopsis="Integral promotions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-5-0
GroupSynopsis="Expressions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-5-2
GroupSynopsis="Postfix expressions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2023-5.2
GroupSynopsis=""
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-5-3
GroupSynopsis="Unary expressions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-5-8
GroupSynopsis="Shift operators"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-5-14
GroupSynopsis="Logical AND operator"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-5-18
GroupSynopsis="Comma operator"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-5-19
GroupSynopsis="Constant expressions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-6-2
GroupSynopsis="Expression statement"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-6-3
GroupSynopsis="Compound statement"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-6-4
GroupSynopsis="Selection statements"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-6-5
GroupSynopsis="Iteration statements"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-6-6
GroupSynopsis="Jump statements"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-7-1
GroupSynopsis="Specifiers"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-7-2
GroupSynopsis="Enumeration declarations"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-7-3
GroupSynopsis="Namespaces"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-7-4
GroupSynopsis="The asm declaration"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-7-5
GroupSynopsis="Linkage specifications"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-8-0
GroupSynopsis="Declarators - General"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-8-3
GroupSynopsis="Meaning of declarators"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-8-4
GroupSynopsis="Function definitions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-8-5
GroupSynopsis="Declarators - Initializers"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-9-3
GroupSynopsis="Member functions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-9-5
GroupSynopsis="Unions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-9-6
GroupSynopsis="Bit-fields"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-10-1
GroupSynopsis="Multiple base classes"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-12-1
GroupSynopsis="Constructors"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-14-6
GroupSynopsis="Name resolution"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-15-0
GroupSynopsis="Exception handling - General"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-15-1
GroupSynopsis="Throwing an exception"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-15-3
GroupSynopsis="Handling an exception"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-15-5
GroupSynopsis="Exception handling - Special functions"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-16-0
GroupSynopsis="Preprocessing directives - General"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-16-2
GroupSynopsis="Source file inclusion"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-16-3
GroupSynopsis="Macro replacement"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-17-0
GroupSynopsis="Library introduction - General"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-18-0
GroupSynopsis="Language support library - General"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-18-2
GroupSynopsis="Language support library - Implementation properties"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-18-4
GroupSynopsis="Language support library - Dynamic memory management"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-18-7
GroupSynopsis="Language support library - Other runtime support"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-19-3
GroupSynopsis="Diagnostics library - Error numbers"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2008-27-0
GroupSynopsis="Input/output library - General"
GroupPackage=MISRAC++2008
GroupDefault=on

GroupName=MISRAC++2023-0.0
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-0.1
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-0.2
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-4.1
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-5.7
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-5.10
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-5.13
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-6.0
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-6.2
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-6.4
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-6.5
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-6.7
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-6.8
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-6.9
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-7.0
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-7.11
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.0
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.1
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.2
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.3
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.7
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.9
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.14
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.18
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.19
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-8.20
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-9.2
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-9.3
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-9.4
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-9.5
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-9.6
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-10.0
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-10.1
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-10.2
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-10.3
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-10.4
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-11.3
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-11.6
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-12.2
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-12.3
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-13.1
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-13.3
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-14.1
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-15.1
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-16.5
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-18.1
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-18.3
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-19.0
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-19.2
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-19.3
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-21.2
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-21.6
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-21.10
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on

GroupName=MISRAC++2023-30.0
GroupSynopsis=""
GroupPackage=MISRAC++2023
GroupDefault=on


