[analyzer][NFC] Add tests for extents

If we allocate memory, the extent of the MemRegion will be the symbolic
value of the size parameter. This way, if that symbol gets constrained,
the extent will be also constrained.

This test demonstrates that the extent is indeed the same symbol.

Reviewed By: NoQ

Differential Revision: https://reviews.llvm.org/D99959
This commit is contained in:
Balazs Benics 2021-04-07 13:42:29 +02:00
parent 583258723f
commit f0e102c1a3
1 changed files with 13 additions and 0 deletions

View File

@ -8,6 +8,8 @@
#include "Inputs/system-header-simulator.h"
void clang_analyzer_eval(int);
void clang_analyzer_dump(int);
void clang_analyzer_dumpExtent(void *);
// Without -fms-compatibility, wchar_t isn't a builtin type. MSVC defines
// _WCHAR_T_DEFINED if wchar_t is available. Microsoft recommends that you use
@ -1883,3 +1885,14 @@ void testMallocIntoMalloc() {
s->memP = malloc(sizeof(int));
free(s);
} // FIXME: should warn here
int conjure();
void testExtent() {
int x = conjure();
clang_analyzer_dump(x);
// expected-warning-re@-1 {{{{^conj_\$[[:digit:]]+{int, LC1, S[[:digit:]]+, #1}}}}}}
int *p = (int *)malloc(x);
clang_analyzer_dumpExtent(p);
// expected-warning-re@-1 {{{{^conj_\$[[:digit:]]+{int, LC1, S[[:digit:]]+, #1}}}}}}
free(p);
}