V3064. Division or mod division by zero.
The analyzer has detected a potential division by zero.
The example:
if (maxHeight >= 0)
{
fx = height / maxHeight;
}
It is checked in the condition if the value of the maxHeight
variable is non-negative. If this value equals 0
, the division by zero occurs inside the if
statement's body. To fix this issue, ensure that the division operation is executed only when maxHeight
refers to a positive number.
The fixed code:
if (maxHeight > 0)
{
fx = height / maxHeight;
}
The division by the value obtained from an external source is unsafe:
void Division()
{
var divisibleStr = Request.QueryString["divisible"];
var dividerStr = Request.QueryString["divider"];
if ( Int32.TryParse(divisibleStr, out int divisible)
&& Int32.TryParse(dividerStr, out int divider))
{
int difference = divisible / divider;
}
}
The value for dividerStr
, obtained from an external source, is converted to int
and assigned to the divider
variable. This variable is then used as a divisor. If the value is 0
, it can lead to the division by zero.
To fix this potential issue, check divider
before performing the division:
void Division()
{
var divisibleStr = Request.QueryString["divisible"];
var dividerStr = Request.QueryString["divider"];
if ( Int32.TryParse(divisibleStr, out int divisible)
&& Int32.TryParse(dividerStr, out int divider)
&& divider != 0) // <=
{
int difference = divisible / divider;
}
}
This diagnostic is classified as:
You can look at examples of errors detected by the V3064 diagnostic. |