@@ -251,20 +251,21 @@ TEST(AddressSanitizer, BitFieldNegativeTest) {
251
251
namespace {
252
252
253
253
const char kSEGVCrash [] = " AddressSanitizer: SEGV on unknown address" ;
254
- const char kOverriddenHandler [] = " ASan signal handler has been overridden\n " ;
254
+ const char kOverriddenSigactionHandler [] = " Test sigaction handler\n " ;
255
+ const char kOverriddenSignalHandler [] = " Test signal handler\n " ;
255
256
256
257
TEST (AddressSanitizer, WildAddressTest) {
257
258
char *c = (char *)0x123 ;
258
259
EXPECT_DEATH (*c = 0 , kSEGVCrash );
259
260
}
260
261
261
262
void my_sigaction_sighandler (int , siginfo_t *, void *) {
262
- fprintf (stderr, kOverriddenHandler );
263
+ fprintf (stderr, kOverriddenSigactionHandler );
263
264
exit (1 );
264
265
}
265
266
266
267
void my_signal_sighandler (int signum) {
267
- fprintf (stderr, kOverriddenHandler );
268
+ fprintf (stderr, kOverriddenSignalHandler );
268
269
exit (1 );
269
270
}
270
271
@@ -273,16 +274,20 @@ TEST(AddressSanitizer, SignalTest) {
273
274
memset (&sigact, 0 , sizeof (sigact));
274
275
sigact.sa_sigaction = my_sigaction_sighandler;
275
276
sigact.sa_flags = SA_SIGINFO;
276
- // ASan should silently ignore sigaction()...
277
+ char *c = (char *)0x123 ;
278
+
279
+ EXPECT_DEATH (*c = 0 , kSEGVCrash );
280
+
281
+ // ASan should allow to set sigaction()...
277
282
EXPECT_EQ (0 , sigaction (SIGSEGV, &sigact, 0 ));
278
283
#ifdef __APPLE__
279
284
EXPECT_EQ (0 , sigaction (SIGBUS, &sigact, 0 ));
280
285
#endif
281
- char *c = ( char *) 0x123 ;
282
- EXPECT_DEATH (*c = 0 , kSEGVCrash );
286
+ EXPECT_DEATH ( *c = 0 , kOverriddenSigactionHandler ) ;
287
+
283
288
// ... and signal().
284
- EXPECT_EQ ( 0 , signal (SIGSEGV, my_signal_sighandler));
285
- EXPECT_DEATH (*c = 0 , kSEGVCrash );
289
+ EXPECT_NE (SIG_ERR , signal (SIGSEGV, my_signal_sighandler));
290
+ EXPECT_DEATH (*c = 0 , kOverriddenSignalHandler );
286
291
}
287
292
} // namespace
288
293
#endif
0 commit comments