# V3225. A data reading method returns the number of bytes that were read and cannot return the value of -1.

Анализатор обнаружил некорректную проверку возвращаемого значения метода. Некоторые методы возвращают значение, указывающее на успешность выполнения. Разработчик может ожидать, что метод вернёт `-1`, а на самом деле вернёт `0`.

Рассмотрим пример:

    public void ProcessStream(Stream s)
    {
      byte[] bytes = new byte[s.Length + 10];
      int numBytesRead = 0;
      int n = s.Read(bytes, numBytesRead, 1);

      if (n == -1)
      {
        ....
      }

      ....
    }

В данном случае проверка возвращаемого значения метода бессмысленна, поскольку метод `Read`, если достигнет конца потока, вернёт `0`.

Исправить код можно следующим образом:

    public void ProcessStream(Stream s)
    {
      byte[] bytes = new byte[s.Length + 10];
      int numBytesRead = 0;
      int n = s.Read(bytes, numBytesRead, 1);

      if (n == 0)
      {
        ....
      }

      ....
    }

Данная диагностика классифицируется как:

CWE-253