Files
codeql/java/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.qhelp
Marcono1234 e21cbe82a9 Update Java documentation links to Java 11
Where possible update Java documentation links to Java 11.
Additionally update some other links to use HTTPS.
2021-02-26 00:43:51 +01:00

48 lines
1.5 KiB
XML

<!DOCTYPE qhelp PUBLIC
"-//Semmle//qhelp//EN"
"qhelp.dtd">
<qhelp>
<overview>
<p>Performing calculations on uncontrolled data can result in integer overflows
unless the input is validated.</p>
<p>If the data is not under your control, and can take extremely large values,
even arithmetic operations that would usually result in a small change in magnitude may result in overflows.</p>
</overview>
<recommendation>
<p>Always guard against overflow in arithmetic operations on uncontrolled data by doing one of the
following:</p>
<ul>
<li>Validate the data.</li>
<li>Define a guard on the arithmetic expression, so that the operation is performed only if the
result can be known to be less than, or equal to, the maximum value for the type, for example <code>MAX_VALUE</code>.</li>
<li>Use a wider type, so that larger input values do not cause overflow.</li>
</ul>
</recommendation>
<example>
<p>In this example, a random integer is generated. Because the value
is not controlled by the programmer, it could be extremely large. Performing arithmetic operations on this
value could therefore cause an overflow. To avoid this happening, the example shows how to perform
a check before performing a multiplication.</p>
<sample src="ArithmeticUncontrolled.java" />
</example>
<references>
<li>SEI CERT Oracle Coding Standard for Java:
<a href="https://wiki.sei.cmu.edu/confluence/display/java/NUM00-J.+Detect+or+prevent+integer+overflow">NUM00-J. Detect or prevent integer overflow</a>.</li>
<!-- LocalWords: CWE
-->
</references>
</qhelp>