Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The effects of passing objects of nonstandard-layout type across execution boundaries depends on what operations are performed on the object within the callee as well as what subsequent operations are performed on the object from the caller. The effects can range from correct or benign behavior to undefined behavior.

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

EXP60-CPP

High

Probable

Medium

P12

L1

Automated Detection

Tool

Version

Checker

Description

Clang

Include Page
Clang_V
Clang_V
-Wdynamic-class-memaccessCatches instances where the vtable pointer will be overwritten
Helix QAC

Include Page
Helix QAC_V
Helix QAC_V

DF4741, DF4742, DF4743


Klocwork
Include Page
Klocwork_V
Klocwork_V
CERT.EXPR.PASS_NON_STD_LAYOUT
Parasoft C/C++test

Include Page
Parasoft_V
Parasoft_V

CERT_CPP-EXP60-aDo not pass a nonstandard-layout type object across execution boundaries
Polyspace Bug Finder

Include Page
Polyspace Bug Finder_V
Polyspace Bug Finder_V

CERT C++: EXP60-CPPChecks for non-standard layout objects passed across execution boundaries (rule fully covered).

Related Vulnerabilities

Search for other vulnerabilities resulting from the violation of this rule on the CERT website.

Related Guidelines

Bibliography

[ISO/IEC 14882-2014]Clause 9, "Classes"
Subclause 7.5, "Linkage Specifications"
 
 


...