@@ -26,9 +26,10 @@ static const char kInterceptorName[] = "interceptor_name";
26
26
static const char kInterceptorViaFunction [] = " interceptor_via_fun" ;
27
27
static const char kInterceptorViaLibrary [] = " interceptor_via_lib" ;
28
28
static const char kODRViolation [] = " odr_violation" ;
29
+ static const char kAllocDeallocMismatch [] = " alloc_dealloc_mismatch" ;
29
30
static const char *kSuppressionTypes [] = {
30
31
kInterceptorName , kInterceptorViaFunction , kInterceptorViaLibrary ,
31
- kODRViolation };
32
+ kODRViolation , kAllocDeallocMismatch };
32
33
33
34
SANITIZER_INTERFACE_WEAK_DEF (const char *, __asan_default_suppressions, void ) {
34
35
return " " ;
@@ -52,7 +53,8 @@ bool IsInterceptorSuppressed(const char *interceptor_name) {
52
53
bool HaveStackTraceBasedSuppressions () {
53
54
CHECK (suppression_ctx);
54
55
return suppression_ctx->HasSuppressionType (kInterceptorViaFunction ) ||
55
- suppression_ctx->HasSuppressionType (kInterceptorViaLibrary );
56
+ suppression_ctx->HasSuppressionType (kInterceptorViaLibrary ) ||
57
+ suppression_ctx->HasSuppressionType (kAllocDeallocMismatch );
56
58
}
57
59
58
60
bool IsODRViolationSuppressed (const char *global_var_name) {
@@ -79,19 +81,22 @@ bool IsStackTraceSuppressed(const StackTrace *stack) {
79
81
return true ;
80
82
}
81
83
82
- if (suppression_ctx->HasSuppressionType (kInterceptorViaFunction )) {
83
- SymbolizedStackHolder symbolized_stack (symbolizer->SymbolizePC (addr));
84
- const SymbolizedStack *frames = symbolized_stack.get ();
85
- CHECK (frames);
86
- for (const SymbolizedStack *cur = frames; cur; cur = cur->next ) {
87
- const char *function_name = cur->info .function ;
88
- if (!function_name) {
89
- continue ;
90
- }
91
- // Match "interceptor_via_fun" suppressions.
92
- if (suppression_ctx->Match (function_name, kInterceptorViaFunction ,
93
- &s)) {
94
- return true ;
84
+ const char *suppressions[] = {kInterceptorViaFunction ,
85
+ kAllocDeallocMismatch };
86
+ for (const char *suppression : suppressions) {
87
+ if (suppression_ctx->HasSuppressionType (suppression)) {
88
+ SymbolizedStackHolder symbolized_stack (symbolizer->SymbolizePC (addr));
89
+ const SymbolizedStack *frames = symbolized_stack.get ();
90
+ CHECK (frames);
91
+ for (const SymbolizedStack *cur = frames; cur; cur = cur->next ) {
92
+ const char *function_name = cur->info .function ;
93
+ if (!function_name) {
94
+ continue ;
95
+ }
96
+ // Match suppressions.
97
+ if (suppression_ctx->Match (function_name, suppression, &s)) {
98
+ return true ;
99
+ }
95
100
}
96
101
}
97
102
}
0 commit comments