Sign extension error
From OWASP
This is a Vulnerability. To view all vulnerabilities, please see the Vulnerability Category page.
Overview
If one extends a signed number incorrectly, if negative numbers are used, an incorrect extension may result.
Consequences
- Integrity: If one attempts to sign extend a negative variable with an unsigned extension algorithm, it will produce an incorrect result.
- Authorization: Sign extension errors - if they are used to collect information from smaller signed sources - can often create buffer overflows and other memory based problems.
Exposure period
- Requirements section: The choice to use a language which provides a framework to deal with this could be used.
- Implementation: A logical flaw of this kind might lead to any number of other flaws.
Platform
- Languages: C or C++
- Operating platforms: Any
Required resources
Any
Severity
High
Likelihood of exploit
High
Avoidance and mitigation
- Implementation: Use a sign extension library or standard function to extend signed numbers.
- Implementation: When extending signed numbers fill in the new bits with 0 if the sign bit is 0 or fill the new bits with 1 if the sign bit is 1.
Discussion
Sign extension errors - if they are used to collect information from smaller signed sources - can often create buffer overflows and other memory based problems.
Examples
In C:
struct fakeint {
short f0;
short zeros;
};
struct fakeint strange;
struct fakeint strange2;
strange.f0=-240;
strange2.f0=240;
strange2.zeros=0;
strange.zeros=0;
printf("%d %d\n",strange.f0,strange);
printf("%d %d\n",strange2.f0,strange2);
Related problems
Not available.

