# V621. Loop may execute incorrectly or may not execute at all. Consider inspecting the 'for' operator.

Анализатор обнаружил потенциально возможную ошибку, связанную с тем, что в операторе 'for' используются странные начальное и конечное значения счетчика. Это может приводить к некорректному выполнению цикла и нарушению логики работы программы.

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

    signed char i;
    for (i = -10; i < 100; i--)
    {
      ...
    };

Возможно, произошла опечатка и перепутаны начальные и конечные значения. Так же ошибка может возникнуть, если перепутаны операторы '++' и '--'.

Корректный вариант кода:

    for (i = -10; i < 100; i++)
    {
      ...
    };

Также корректным будет следующий код:

    for (i = 100; i > -10; i--)
    {
    ...
    };

Рассмотрим код, найденный анализатором в реальном приложении:

    void CertificateRequest::Build()
    {
        ...
        uint16 authCount = 0;

        for (int j = 0; j < authCount; j++) {
          int sz = REQUEST_HEADER + MIN_DIS_SIZE;
          ...
        }
    }

Переменная 'authCount' инициализируется неправильным значением или здесь вообще должна быть использована другая переменная.

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

CWE-835 CERT-MSC21-C

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V621.