History log of /external/clang/test/Analysis/diagnostics/false-positive-suppression.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
6ee777de8b35a3a18da424356aebe9ec743dc497 19-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move an input header file under an Inputs directory to be consistent
with other auxilliary test inputs and simplify the identification of
inputs to tests.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172890 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Analysis/diagnostics/false-positive-suppression.c
1dfebd9f995066a229c34516eb14bc69c6bcde2c 19-Jan-2013 Anna Zaks <ganna@apple.com> [analyzer] Suppress warnings coming out of macros defined in sys/queue.h

Suppress the warning by just not emitting the report. The sink node
would get generated, which is fine since we did reach a bad state.

Motivation

Due to the way code is structured in some of these macros, we do not
reason correctly about it and report false positives. Specifically, the
following loop reports a use-after-free. Because of the way the code is
structured inside of the macro, the analyzer assumes that the list can
have cycles, so you end up with use-after-free in the loop, that is
safely deleting elements of the list. (The user does not have a way to
teach the analyzer about shape of data structures.)

SLIST_FOREACH_SAFE(item, &ctx->example_list, example_le, tmpitem) {
if (item->index == 3) { // if you remove each time, no complaints
assert((&ctx->example_list)->slh_first == item);
SLIST_REMOVE(&ctx->example_list, item, example_s, example_le);
free(item);
}
}

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/Analysis/diagnostics/false-positive-suppression.c