Clang статический анализатор пропускает деление на ноль - PullRequest
0 голосов
/ 02 декабря 2018

Я экспериментирую со статическим анализатором clang, и я нашел следующий пример, где он пропускает возможное деление на ноль:

#include <stdio.h>

int k = 300;

char *parse_mailpath_spec (char *str)
{
    char *s;
    int pass_next;

    for (s = str, pass_next = 0; s && *s; s++)
    {
        if (pass_next == 4)
        {
            int j = 0;
            k = 5 / j;
        }
        if (*s == '\\')
        {
            pass_next++;
            continue;
        }
        if (*s == '?' || *s == '%')
        {
            return s;
        }
    }
    return ((char *)NULL);
}

int main(int argc, char **argv)
{
    if (parse_mailpath_spec(argv[1])) return 0;
    else return -1;
}

Если я изменю if (pass_next == 4) на if (pass_next == 3), то анализатор находит ошибку и сообщает о делении на ноль .Думаю, я был слишком наивен, думая, что анализатор не остановится, если не докажет, что программа безопасна (?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...