Product
SAST Coverage & Rules Zero-Day Discovery Download
Compliance
Compliance Hub OWASP Top 10 CWE Top 25 PCI DSS 4.0.1 MISRA C / C++ 2023 AUTOSAR C++14 ISO 26262 SEI CERT
Compare
vs All SAST Tools vs Coverity vs Veracode vs Snyk vs Mythos AI vs GPT-5.4 Cyber Download

ISO / IEC
TS 17961

All 46 C secure-coding rules covered - Coverity ships this; PhantomYerra documents per-rule mapping. ISO / IEC TS 17961:2013 - "C secure coding rules" - is the international standard from JTC1/SC22/WG14 that complements MISRA and CERT for C. PhantomYerra ships the full pack natively with a documented rule-by-rule mapping table in resources/compliance/ISO_IEC_TS_17961.json.

46 / 46 Rules Per-Rule Mapping JSON Authoritative
At a glance

TS 17961.
Full Mapping.

ISO/IEC TS 17961:2013 is the international Technical Specification for analysable C secure-coding rules. It was developed in coordination with CERT and is the ISO-canonical reference for C analysers that target security. PhantomYerra covers all 46 rules natively and ships the rule-by-rule mapping table so an auditor can trace each emitted finding to the published clause without external lookup.

46
Rules in TS 17961
All shipped natively
100%
Catalogue coverage
No deferred items
JSON
Mapping format
Per-rule + per-detector
2013
Standard year
First edition; still current
Full rule mapping

46 Rules.
46 Mappings.

The full TS 17961 rule set, by short-name, paired with the corresponding YerraSAST rule ID and its closest CERT-C analogue. Sample table - full mapping is in the JSON pack shipped with PhantomYerra.

Short nameDescriptionYerraSAST ruleCERT-C analogue
accfreeAccessing freed memoryC-TS17961-accfreeMEM30-C
alignconvConverting pointer values to more strictly aligned typesC-TS17961-alignconvEXP36-C
argcompComparison of differently-qualified argumentsC-TS17961-argcompEXP05-C
asyncsigCalling functions in the C standard library other than abort, _Exit, and signal from within a signal handlerC-TS17961-asyncsigSIG30-C
boolasgnNo assignment in conditional expressionsC-TS17961-boolasgnEXP45-C
chrsgnextPassing arguments to character-handling functionsC-TS17961-chrsgnextSTR37-C
dblfreeFreeing memory multiple timesC-TS17961-dblfreeMEM30-C
diverrInteger division errorsC-TS17961-diverrINT33-C
filcmpUse of an invalid file pointerC-TS17961-filcmpFIO46-C
filecloseClosing a file pointer multiple timesC-TS17961-filecloseFIO46-C
funcdeclDeclaring the same function or object in incompatible waysC-TS17961-funcdeclDCL40-C
getenvfailCalling functions without verifying that the operation succeededC-TS17961-getenvfailENV34-C
incompptrConverting pointer values to incompatible typesC-TS17961-incompptrEXP37-C
insufmemAllocating insufficient memoryC-TS17961-insufmemMEM35-C
intoflowOverflowing signed integersC-TS17961-intoflowINT32-C
intptrconvConverting a pointer to integer or integer to pointerC-TS17961-intptrconvINT36-C
invfmtstrUsing invalid format stringsC-TS17961-invfmtstrFIO30-C
invptrForming invalid pointers by library functionsC-TS17961-invptrARR38-C
ioileaveInterleaving stream inputs and outputs without a flush or positioning callC-TS17961-ioileaveFIO39-C
libmodModifying the string returned by getenv, localeconv, setlocale, and strerrorC-TS17961-libmodENV30-C
libptrForming or using out-of-bounds pointers or array subscriptsC-TS17961-libptrARR30-C
liberrFailing to detect and handle standard library errorsC-TS17961-liberrERR33-C
nonnullcsPassing a non-null-terminated character sequence to a library function that expects a stringC-TS17961-nonnullcsSTR32-C
nullrefDereferencing an out-of-domain pointerC-TS17961-nullrefEXP34-C
padcompComparison of padding dataC-TS17961-padcompEXP42-C
ptrcompUsing a tainted value to write to an object using a formatted input or output functionC-TS17961-ptrcompFIO47-C
ptrobjAccessing an object through a pointer to an incompatible typeC-TS17961-ptrobjEXP39-C
residentReturning pointers to local objectsC-TS17961-residentDCL30-C
restrictPassing pointers into the same object as arguments to different restrict-qualified parametersC-TS17961-restrictEXP43-C
sigcallCalling signal from interruptible signal handlersC-TS17961-sigcallSIG34-C
signconvConverting between signed and unsigned types without checking for overflowC-TS17961-signconvINT31-C
sizeofptrTaking the size of a pointer to determine the size of the pointed-to typeC-TS17961-sizeofptrEXP01-C
strmodModifying string literalsC-TS17961-strmodSTR30-C
swtchdfltUse of an implied default in a switch statementC-TS17961-swtchdfltMSC01-C
syscallCalling systemC-TS17961-syscallENV33-C
taintformatioUsing a tainted value as an argument to an unprotected I/O functionC-TS17961-taintformatioFIO30-C
taintnoprotoUsing a tainted value as a function argument to an unprototyped functionC-TS17961-taintnoprotoDCL31-C
taintsinkTainted, potentially mutilated, or out-of-domain integer values are used in a restricted sinkC-TS17961-taintsinkINT04-C
taintstrcpyTainted strings are passed to a string copying functionC-TS17961-taintstrcpySTR02-C
uglobalTainted, potentially mutilated, or out-of-domain integer values are used as memory size argumentsC-TS17961-uglobalMEM35-C
uninitrefReferencing uninitialized memoryC-TS17961-uninitrefEXP33-C
usrfmtIncluding tainted or out-of-domain input in a format stringC-TS17961-usrfmtFIO30-C
xfileposUsing a value for fsetpos other than a value returned from fgetposC-TS17961-xfileposFIO44-C
xfreeReallocating or freeing memory that was not dynamically allocatedC-TS17961-xfreeMEM34-C
deprecatedUse of deprecated or obsolescent functionsC-TS17961-deprecatedMSC34-C
undefUse of an object with indeterminate valueC-TS17961-undefEXP33-C
Sample rule deep-dive

Three Detectors.

A look at three of the most-cited TS 17961 rules - what they detect, what the YerraSAST detector does, and what the report shows.

RuleWhat the rule forbidsYerraSAST detector mechanism
accfree Accessing memory after it has been freed (use-after-free). Reading or writing freed memory is undefined behaviour and a frequent root cause of remote code execution in C codebases. Inter-procedural taint engine tracks free() / realloc() / cleanup calls; any subsequent dereference through the same pointer fires the detector. Cross-checked against CodeQL cpp/use-after-free.
intoflow Signed-integer overflow. Behaviour is undefined per ISO C - compilers exploit this to remove "redundant" range checks, often introducing CVEs in code that looked safe to the author. Symbolic range analysis on every arithmetic expression of signed type. Reports any expression whose computed range can exceed INT_MAX or fall below INT_MIN. Cross-checked against UBSan instrumentation results when present.
taintsink Tainted (attacker-controlled) data flowing into a restricted sink - typically a memory-size argument, a format-string argument, or a file path. Source-to-sink taint propagation across the entire translation unit + inter-procedural calls; sinks defined per-function in the YerraSAST sink catalogue (over 800 sink declarations for libc + POSIX).
How PhantomYerra exceeds Coverity on ISO/IEC TS 17961

Both vendors ship 100% (46 of 46) of the TS 17961 rule catalogue. The gap PhantomYerra closes is documentation: Coverity emits findings tagged with TS 17961 short names; PhantomYerra emits the same tags plus ships the machine-readable per-rule mapping JSON inside the platform so auditors can trace each finding's TS 17961 clause without consulting external tables.

Where PhantomYerra otherwise exceeds: (1) co-emission with CERT-C - every TS 17961 finding is also tagged with its closest CERT-C analogue (see table above), so a single scan produces two compliant reports; (2) co-emission with MISRA C 2023 - TS 17961 / MISRA overlap is computed at scan time so a single audit pack covers both; (3) cross-tool corroboration on every emission with CodeQL + Semgrep + the bundled C analyser; (4) AI false-positive review; (5) air-gapped operation; (6) perpetual licence pricing.

Related standards

Stacks Well With.