@@ -748,7 +748,7 @@ void ReportStackOverflow(const SignalContext &sig) {
748
748
(void *)sig.addr , (void *)sig.pc , (void *)sig.bp , (void *)sig.sp ,
749
749
GetCurrentTidOrInvalid ());
750
750
Printf (" %s" , d.EndWarning ());
751
- ScarinessScore::PrintSimple (15 , " stack-overflow" );
751
+ ScarinessScore::PrintSimple (10 , " stack-overflow" );
752
752
GET_STACK_TRACE_SIGNAL (sig);
753
753
stack.Print ();
754
754
ReportErrorSummary (" stack-overflow" , &stack);
@@ -851,7 +851,7 @@ void ReportFreeNotMalloced(uptr addr, BufferedStackTrace *free_stack) {
851
851
curr_tid, ThreadNameWithParenthesis (curr_tid, tname, sizeof (tname)));
852
852
Printf (" %s" , d.EndWarning ());
853
853
CHECK_GT (free_stack->size , 0 );
854
- ScarinessScore::PrintSimple (10 , " bad-free" );
854
+ ScarinessScore::PrintSimple (40 , " bad-free" );
855
855
GET_STACK_TRACE_FATAL (free_stack->trace [0 ], free_stack->top_frame_bp );
856
856
stack.Print ();
857
857
DescribeHeapAddress (addr, 1 );
@@ -1054,6 +1054,10 @@ static void PrintContainerOverflowHint() {
1054
1054
" AddressSanitizerContainerOverflow.\n " );
1055
1055
}
1056
1056
1057
+ static bool AdjacentShadowValuesAreFullyPoisoned (u8 *s) {
1058
+ return s[-1 ] > 127 && s[1 ] > 127 ;
1059
+ }
1060
+
1057
1061
void ReportGenericError (uptr pc, uptr bp, uptr sp, uptr addr, bool is_write,
1058
1062
uptr access_size, u32 exp, bool fatal) {
1059
1063
if (!fatal && SuppressErrorReport (pc)) return ;
@@ -1100,7 +1104,7 @@ void ReportGenericError(uptr pc, uptr bp, uptr sp, uptr addr, bool is_write,
1100
1104
case kAsanArrayCookieMagic :
1101
1105
bug_descr = " heap-buffer-overflow" ;
1102
1106
bug_type_score = 10 ;
1103
- far_from_bounds = shadow_addr[- 1 ] > 127 && shadow_addr[ 1 ] > 127 ;
1107
+ far_from_bounds = AdjacentShadowValuesAreFullyPoisoned ( shadow_addr) ;
1104
1108
break ;
1105
1109
case kAsanHeapFreeMagic :
1106
1110
bug_descr = " heap-use-after-free" ;
@@ -1109,7 +1113,7 @@ void ReportGenericError(uptr pc, uptr bp, uptr sp, uptr addr, bool is_write,
1109
1113
case kAsanStackLeftRedzoneMagic :
1110
1114
bug_descr = " stack-buffer-underflow" ;
1111
1115
bug_type_score = 25 ;
1112
- far_from_bounds = shadow_addr[- 1 ] > 127 && shadow_addr[ 1 ] > 127 ;
1116
+ far_from_bounds = AdjacentShadowValuesAreFullyPoisoned ( shadow_addr) ;
1113
1117
break ;
1114
1118
case kAsanInitializationOrderMagic :
1115
1119
bug_descr = " initialization-order-fiasco" ;
@@ -1120,15 +1124,15 @@ void ReportGenericError(uptr pc, uptr bp, uptr sp, uptr addr, bool is_write,
1120
1124
case kAsanStackPartialRedzoneMagic :
1121
1125
bug_descr = " stack-buffer-overflow" ;
1122
1126
bug_type_score = 25 ;
1123
- far_from_bounds = shadow_addr[- 1 ] > 127 && shadow_addr[ 1 ] > 127 ;
1127
+ far_from_bounds = AdjacentShadowValuesAreFullyPoisoned ( shadow_addr) ;
1124
1128
break ;
1125
1129
case kAsanStackAfterReturnMagic :
1126
1130
bug_descr = " stack-use-after-return" ;
1127
1131
bug_type_score = 30 ;
1128
1132
break ;
1129
1133
case kAsanUserPoisonedMemoryMagic :
1130
1134
bug_descr = " use-after-poison" ;
1131
- bug_type_score = 10 ;
1135
+ bug_type_score = 20 ;
1132
1136
break ;
1133
1137
case kAsanContiguousContainerOOBMagic :
1134
1138
bug_descr = " container-overflow" ;
@@ -1141,7 +1145,7 @@ void ReportGenericError(uptr pc, uptr bp, uptr sp, uptr addr, bool is_write,
1141
1145
case kAsanGlobalRedzoneMagic :
1142
1146
bug_descr = " global-buffer-overflow" ;
1143
1147
bug_type_score = 10 ;
1144
- far_from_bounds = shadow_addr[- 1 ] > 127 && shadow_addr[ 1 ] > 127 ;
1148
+ far_from_bounds = AdjacentShadowValuesAreFullyPoisoned ( shadow_addr) ;
1145
1149
break ;
1146
1150
case kAsanIntraObjectRedzone :
1147
1151
bug_descr = " intra-object-overflow" ;
@@ -1151,7 +1155,7 @@ void ReportGenericError(uptr pc, uptr bp, uptr sp, uptr addr, bool is_write,
1151
1155
case kAsanAllocaRightMagic :
1152
1156
bug_descr = " dynamic-stack-buffer-overflow" ;
1153
1157
bug_type_score = 25 ;
1154
- far_from_bounds = shadow_addr[- 1 ] > 127 && shadow_addr[ 1 ] > 127 ;
1158
+ far_from_bounds = AdjacentShadowValuesAreFullyPoisoned ( shadow_addr) ;
1155
1159
break ;
1156
1160
}
1157
1161
SS.Scare (bug_type_score, bug_descr);
0 commit comments