...
EXP62-CPP-EX1: It is permissible to access the bits of an object representation when that access is otherwise unobservable in well-defined code. For instance, it is acceptable to call std::memcpy() on an object containing a bit-field, as in the following example, because the read and write of the padding bits cannot be observed. However, the code must still comply with OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions.
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <cstring>
struct S {
int i : 10;
int j;
};
void f(const S &s1) {
S &s2;
std::memcpy(&s2, &s1, sizeof(S));
} |
...
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Related Guidelines
| SEI CERT C++ Coding Standard | OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions |
|
Bibliography
| [ISO/IEC 14882-2014] | Subclause 3.9, "Types" Subclause 3.10, "Lvalues and Rvalues" Clause 9, "Classes" |
...