# 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:

CWE-369

You can look at examples of errors detected by the V3064 diagnostic.