Misaligned or invalid results from conversions between pointer and integer types
This defect occurs when you convert between a pointer type, such as
intptr_t, or
uintprt_t, and an integer type,
such as enum,
ptrdiff_t, or
pid_t, or vice versa.
The mapping between pointers and integers is not always consistent with the addressing structure of the environment.
Converting from pointers to integers can create:
Truncated or out of range integer values.
Invalid integer types.
Converting from integers to pointers can create:
Misaligned pointers or misaligned objects.
Invalid pointer addresses.
Where possible, avoid pointer-to-integer or integer-to-pointer
conversions. If you want to convert a void pointer
to an integer, so that you do not change the value, use types:
C99 — intptr_t or uintptr_t
C90 — size_t or ssize_t
| Group: Programming |
| Language: C | C++ |
| Default: Off |
Command-Line Syntax: BAD_INT_PTR_CAST |
| Impact: Medium |
| CWE ID: 465, 466, 587, 758 |