TS 17961 Rule Enforcement
(ISO/IEC TS 17961 Information Technology — Programming languages, their environments and system software interfaces — C Secure Coding Rules)
ENFORCEMENT HELIX QAC 2023.3
Total Number of Rules
Total Number of ‘Not Statically Enforceable’ Rules (Assisted/Unassisted)
Total Number of Enforceable Rules (a-b)
Total Number of Enforced Rules
Total Number of Unenforced Rules
Enforce Rules Percentage (d/c)
Unenforced Rules Percentage (e/c)
Accessing an object through a pointer to an incompatible type [ptrcomp].
Accessing freed memory [accfree].
Accessing shared objects in signal handlers [accsig].
No assignment in conditional expressions [boolasgn].
Calling functions in the C Standard Library other than abort, _Exit, and signal from within a signal handler [asyncsig].
Calling functions with incorrect arguments [argcomp].
Calling signal from interruptible signal handlers [sigcall].
Calling system [syscall].
Comparison of padding data [padcomp].
Converting a pointer to integer or integer to pointer [intptrconv].
Converting pointer values to more strictly aligned pointer types [alignconv].
Copying a FILE object [filecpy].
Declaring the same function or object in incompatible ways [funcdecl].
Dereferencing an out-ofdomain pointer [nullref].
Escaping of the address of an automatic object [addrescape].
Conversion of signed characters to wider integer types before a check for EOF [signconv].
Use of an implied default in a switch statement [swtchdflt].
Failing to close files or free dynamic memory when they are no longer needed [fileclose].
Failing to detect and handle standard library errors [liberr].
Forming invalid pointers by library function [libptr].
Allocating insufficient memory [insufmem].
Forming or using out-of-bounds pointers or array subscripts [invptr].
Freeing memory multiple times [dblfree].
Including tainted or out-of-domain input in a format string [usrfmt].
Incorrectly setting and using errno [inverrno].
Integer division errors [diverr].
Interleaving stream inputs and outputs without a flush or positioning call [ioileave].
Modifying string literals [strmod].
Modifying the string returned by getenv, localeconv, setlocale, and strerror [libmod].
Overflowing signed integers [intoflow].
Passing a non-null-terminated character sequence to a library function that expects a string [nonnullcs].
Passing arguments to character-handling functions that are not representable as unsigned char [chrsgnext].
Passing pointers into the same object as arguments to different restrict-qualified parameters [restrict].
Reallocating or freeing memory that was not dynamically allocated [xfree].
Referencing uninitialized memory [uninitref].
Subtracting or comparing two pointers that do not refer to the same array [ptrobj].
Tainted strings are passed to a string copying function [taintstrcpy].
Taking the size of a pointer to determine the size of the pointed-to type [sizeofptr].
Using a tainted value as an argument to an unprototyped function pointer [taintnoproto].
Using a tainted value to write to an object using a formatted input or output function [taintformatio].
Using a value for fsetpos other than a value returned from fgetpos [xfilepos].
Using an object overwritten by getenv, localeconv, setlocale, and strerror [libuse].
Using character values that are indistinguishable from EOF [chreof]
Using identifiers that are reserved for the implementation [resident]..
Using invalid format strings [invfmtstr].
Tainted, potentially mutilated, or out-of-domain integer values are used in a restricted sink [taintsink].