ISO/IEC TS 17961:2013 - C Secure

Perforce QAC for C 2026.1

(ISO/IEC TS 17961:2013 - C Secure ISO/IEC TS 17961 Information Technology - Programming languages, their environments and system software interfaces - C Secure Coding Rules)

Rule Enforcement Summary

    Total
a Total Number of Rules 46
b Total Number of 'Not Statically Enforceable' Rules (Assisted/Unassisted) 0
c Total Number of Enforceable Rules (a-b) 46
d Total Number of Enforced Rules 45
e Total Number of Unenforced Rules (c-d) 1
f Enforced Rules Percentage (d/c) 98%
g Unenforced Rules Percentage (e/c) 2%

 

Id Description Enforced
Rule-5.1 Accessing an object through a pointer to an incompatible type [ptrcomp] Yes
Rule-5.2 Accessing freed memory [accfree] Yes
Rule-5.3 Accessing shared objects in signal handlers [accsig] Yes
Rule-5.4 No assignment in conditional expressions [boolasgn] Yes
Rule-5.5 Calling functions in the C Standard Library other than abort, _Exit, and signal from within a signal handler [asyncsig] Yes
Rule-5.6 Calling functions with incorrect arguments [argcomp] Yes
Rule-5.7 Calling signal from interruptible signal handlers [sigcall] Yes
Rule-5.8 Calling system [syscall] Yes
Rule-5.9 Comparison of padding data [padcomp] Yes
Rule-5.10 Converting a pointer to integer or integer to pointer [intptrconv] Yes
Rule-5.11 Converting pointer values to more strictly aligned pointer types [alignconv] Yes
Rule-5.12 Copying a FILE object [filecpy] Yes
Rule-5.13 Declaring the same function or object in incompatible ways [funcdecl] Yes
Rule-5.14 Dereferencing an out-ofdomain pointer [nullref] Yes
Rule-5.15 Escaping of the address of an automatic object [addrescape] Yes
Rule-5.16 Conversion of signed characters to wider integer types before a check for EOF [signconv] Yes
Rule-5.17 Use of an implied default in a switch statement [swtchdflt] Yes
Rule-5.18 Failing to close files or free dynamic memory when they are no longer needed [fileclose] Yes
Rule-5.19 Failing to detect and handle standard library errors [liberr] Yes
Rule-5.20 Forming invalid pointers by library function [libptr] Yes
Rule-5.21 Allocating insufficient memory [insufmem] Yes
Rule-5.22 Forming or using out-of-bounds pointers or array subscripts [invptr] Yes
Rule-5.23 Freeing memory multiple times [dblfree] Yes
Rule-5.24 Including tainted or out-of-domain input in a format string [usrfmt] Yes
Rule-5.25 Incorrectly setting and using errno [inverrno] Yes
Rule-5.26 Integer division errors [diverr] Yes
Rule-5.27 Interleaving stream inputs and outputs without a flush or positioning call [ioileave] Yes
Rule-5.28 Modifying string literals [strmod] Yes
Rule-5.29 Modifying the string returned by getenv, localeconv, setlocale, and strerror [libmod] Yes
Rule-5.30 Overflowing signed integers [intoflow] Yes
Rule-5.31 Passing a non-null-terminated character sequence to a library function that expects a string [nonnullcs] Yes
Rule-5.32 Passing arguments to character-handling functions that are not representable as unsigned char [chrsgnext] Yes
Rule-5.33 Passing pointers into the same object as arguments to different restrict-qualified parameters [restrict] Yes
Rule-5.34 Reallocating or freeing memory that was not dynamically allocated [xfree] Yes
Rule-5.35 Referencing uninitialized memory [uninitref] Yes
Rule-5.36 Subtracting or comparing two pointers that do not refer to the same array [ptrobj] Yes
Rule-5.37 Tainted strings are passed to a string copying function [taintstrcpy] Yes
Rule-5.38 Taking the size of a pointer to determine the size of the pointed-to type [sizeofptr] Yes
Rule-5.39 Using a tainted value as an argument to an unprototyped function pointer [taintnoproto] No
Rule-5.40 Using a tainted value to write to an object using a formatted input or output function [taintformatio] Yes
Rule-5.41 Using a value for fsetpos other than a value returned from fgetpos [xfilepos] Yes
Rule-5.42 Using an object overwritten by getenv, localeconv, setlocale, and strerror [libuse] Yes
Rule-5.43 Using character values that are indistinguishable from EOF [chreof] Yes
Rule-5.44 Using identifiers that are reserved for the implementation [resident] Yes
Rule-5.45 Using invalid format strings [invfmtstr] Yes
Rule-5.46 Tainted, potentially mutilated, or out-of-domain integer values are used in a restricted sink [taintsink] Yes