[PATCH] D72705: [analyzer] Added new checker 'alpha.unix.ErrorReturn'.

Kristóf Umann via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 9 05:05:13 PDT 2020


Szelethus added a comment.

After reading @martong's comment D72705#2035844 <https://reviews.llvm.org/D72705#2035844> and @balazske's comment D72705#2086994 <https://reviews.llvm.org/D72705#2086994>, I think there is a need to argue across all paths of execution within the function, and as such this is a dataflow problem.

In D72705#2086994 <https://reviews.llvm.org/D72705#2086994>, @balazske wrote:

>   c = fgetc(fd);
>   if (c == '+' || c == '*' || c == '|' || c == '>' || c == '@' || c == EOF || c == '\n') { ... }
>  
>
>
> The first `c == '+'` is found by the checker and reported as false positive (the later `c == EOF` is not found). Such a case can be found if the checker can collect expressions that are separated by `||` or `&&` and the symbol to check occurs in these and there is only a simple comparison.


Our current dataflow analyses definitely have to make judgement of which block (and in that, which `CFGStmt`s) **reads** or **writes** a variable/expression. You can actually register an observer for expression writes (or in other terms, //kills//), so I don't think it'd be too challenging to do this with reads.

`DeadStoresChecker` is a great example for a checker that utilizes dataflow and pathsensitive analyses.

In D72705#1863381 <https://reviews.llvm.org/D72705#1863381>, @Szelethus wrote:

> In D72705#1859711 <https://reviews.llvm.org/D72705#1859711>, @balazske wrote:
>
> > Generally, is it a problem if there are multiple checkers that may detect same defects but with different approach?
>
>
> If avoidable, yes. If not, I think its an acceptable sacrifice.


Mind that since D80905 <https://reviews.llvm.org/D80905> landed, the tone has shifted, if a more checker detects a specific bug (like double free) but a more general checker does as well (as passing garbage value to a function) we're okay with that.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72705/new/

https://reviews.llvm.org/D72705





More information about the cfe-commits mailing list