github/codeql-coding-standards

`A4-7-1`: integer data loss false positive erasing from container

fjatWbyT opened this issue · 1 comments

Affected rules

  • A4-7-1

Description

Decrement cannot lead to wrap-around since the container is checked for emptiness.

Example

class container
{
    bool empty()
    {
        return num_items_ == 0;
    }

    void erase()
    {
        if (empty())
            return;

        num_items_--;
    }

    std::size_t num_items_ = 0;
};

This could be addressed by adopting the CERT C implementation for this rule (as per #491), then extending support for container implementations.