Revision Date Author Comments
# f329e3ed 04-Jul-2024 Discookie <viktor.cseh@ericsson.com>

[clang-tidy] Add `bugprone-pointer-arithmetic-on-polymorphic-object` check (#91951)

Finds pointer arithmetic on classes that declare a virtual function.

This check corresponds to the SEI Cert rul

[clang-tidy] Add `bugprone-pointer-arithmetic-on-polymorphic-object` check (#91951)

Finds pointer arithmetic on classes that declare a virtual function.

This check corresponds to the SEI Cert rule [CTR56-CPP: Do not use
pointer arithmetic on polymorphic
objects](https://wiki.sei.cmu.edu/confluence/display/cplusplus/CTR56-CPP.+Do+not+use+pointer+arithmetic+on+polymorphic+objects).

```cpp
struct Base {
virtual void ~Base();
};

struct Derived : public Base {};

void foo(Base *b) {
b += 1; // passing `Derived` to `foo()` results in UB
}
```

[Results on open-source
projects](https://codechecker-demo.eastus.cloudapp.azure.com/Default/runs?run=Discookie-ctr56-with-classnames).
Most of the Qtbase reports are from having a `virtual override`
declaration, and the LLVM reports are true positives, as far as I can
tell.

show more ...