blob: c8193f77f92861c7ad3506461d2b17cc89de668c [file] [log] [blame]
Reka Kovacs18775fc2018-06-09 13:03:49 +00001//===--- AllocationState.h ------------------------------------- *- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_ALLOCATIONSTATE_H
11#define LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_ALLOCATIONSTATE_H
12
Reka Kovacse453e602018-07-07 19:27:18 +000013#include "clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h"
Reka Kovacs18775fc2018-06-09 13:03:49 +000014#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
15
16namespace clang {
17namespace ento {
18
19namespace allocation_state {
20
21ProgramStateRef markReleased(ProgramStateRef State, SymbolRef Sym,
22 const Expr *Origin);
23
Reka Kovacse453e602018-07-07 19:27:18 +000024/// This function provides an additional visitor that augments the bug report
25/// with information relevant to memory errors caused by the misuse of
Reka Kovacs88ad7042018-07-20 15:14:49 +000026/// AF_InnerBuffer symbols.
27std::unique_ptr<BugReporterVisitor> getInnerPointerBRVisitor(SymbolRef Sym);
Reka Kovacse453e602018-07-07 19:27:18 +000028
Reka Kovacsbb2749a2018-08-10 23:56:57 +000029/// 'Sym' represents a pointer to the inner buffer of a container object.
30/// This function looks up the memory region of that object in
31/// DanglingInternalBufferChecker's program state map.
32const MemRegion *getContainerObjRegion(ProgramStateRef State, SymbolRef Sym);
33
Reka Kovacs18775fc2018-06-09 13:03:49 +000034} // end namespace allocation_state
35
36} // end namespace ento
37} // end namespace clang
38
39#endif