MISRA C++:2008 Rule 5-0-17
Subtraction between pointers shall only be applied to pointers that address elements of the same array
Description
Rule Definition
Subtraction between pointers shall only be applied to pointers that address elements of the same array.1
Rationale
When you subtract between two pointers to elements in the same array, the result is the distance between the two array elements. If the pointers are null or point to different arrays, a subtraction operation is undefined. If you use the subtraction result as a buffer index, it can cause a buffer overflow.
Before you subtract between pointers to array elements, make sure that they are non-null and that they point to the same array.
Polyspace Implementation
Polyspace® flags subtraction between pointers to elements of different arrays.
Troubleshooting
If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
Group: Expressions |
Category: Required |
Version History
Introduced in R2013b1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.