# V6009. Function receives an odd argument.

The analyzer detected a possible error that has to do with passing a suspicious value as an argument to a function.

Consider the following examples:

Invalid index

    String SomeMethod(String mask, char ch)
    {
      String name = mask.substring(0, mask.indexOf(ch));
      ...
      return name;
    }

IndexOf() returns the position of a specified argument. If the argument is not found, the function returns the value '-1'. And passing a negative index to function substring() results in an 'StringIndexOutOfBoundsException'.

The fixed version:

    String SomeMethod(String mask, char ch)
    {
      int pos = mask.indexOf(ch);
      if (pos < 0) return "error";

      String name = mask.substring(0, pos);
      ...
      return name;
    }

Null argument

    String[] SplitFunc(String s, String d) {
      ...
      if (d == null) {
        return s.split(d);
      }
      return null;
    }

For several reasons an incorrect check was performed because of what an argument equal null is passed to the function split. In the result, the function will generate an exception 'NullPointerException'.

Correct variant:

    String[] SplitFunc(String s, String d) {
      ...
      if (d != null) {
        return s.split(d);
      }
      return null;
    }

Comparing with itself

    ...
    return obj.equals(obj);

A fragment of code returns the result of comparing of an object with itself. Isn't it strange? Most likely, a comparing with another object has taken place:

    ...
    return obj.equals(obj2);

This diagnostic is classified as:

CWE-628

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