Sign change integer conversion overflow
Overflow when converting between signed and unsigned integers
Description
This defect occurs when converting an unsigned integer to a signed integer. If the variable does not have enough bytes to represent both the original constant and the sign bit, the conversion overflows.
The exact storage allocation for different floating-point types depends on your
processor. See -target.
Fix
The fix depends on the root cause of the defect. Often the result details (or source code tooltips in Polyspace® as You Code™) show a sequence of events that led to the defect. You can implement the fix on any event in the sequence. If the result details do not show this event history, you can search for previous references of variables relevant to the defect using right-click options in the source code. See also Interpret Polyspace Bug Finder Results in Polyspace Platform User Interface or Interpret Bug Finder Results in Polyspace Access Web Interface (Polyspace Access).
If you are using Embedded Coder®, in some cases, Polyspace reports a violation for this defect in generated code that uses 32-bit multiplication and division helper functions. To avoid this defect, enable the setting Support long long in Embedded Coder. See Support long long (Simulink).
If you do not want to fix the issue, add comments to your result or code to avoid another review. See:
Address Polyspace Results Through Bug Fixes or Justifications if you review results in the Polyspace user interface.
Address Results in Polyspace Access Through Bug Fixes or Justifications (Polyspace Access) if you review results in a web browser.
Annotate Code and Hide Known or Acceptable Results if you review results in an IDE.
Extend Checker
A default Bug Finder analysis might not raise this defect when the input values are unknown and only a subset of inputs cause an issue. To check for defects caused by specific system input values, run a stricter Bug Finder analysis. See Extend Bug Finder Checkers to Find Defects from Specific System Input Values.
Examples
Result Information
| Group: Numerical |
| Language: C | C++ |
| Default: On |
Command-Line Syntax:
SIGN_CHANGE
|
| Impact: Medium |
PQL Name:
std.defects.SIGN_CHANGE
|
Version History
Introduced in R2013b
See Also
Find defects (-checkers) | Float conversion overflow | Unsigned integer conversion overflow | Integer conversion overflow
Topics
- Interpret Polyspace Bug Finder Results in Polyspace Platform User Interface
- Interpret Bug Finder Results in Polyspace Access Web Interface (Polyspace Access)
- Address Polyspace Results Through Bug Fixes or Justifications
- Address Results in Polyspace Access Through Bug Fixes or Justifications (Polyspace Access)
- Extend Bug Finder Checkers to Find Defects from Specific System Input Values