aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorPaul Lawrence <paullawrence@google.com>2018-02-06 18:36:16 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2018-02-06 21:32:42 -0500
commit00a14294bb33af533f7ac002fb20623fdd8ea0d7 (patch)
treee592ca6fee0644e4d28ce9cb99880f8468e78554 /lib
parent342061ee4ef3d80001d1ae494378f3979c861dba (diff)
kasan: add tests for alloca poisoning
Link: http://lkml.kernel.org/r/20171204191735.132544-5-paullawrence@google.com Signed-off-by: Greg Hackmann <ghackmann@google.com> Signed-off-by: Paul Lawrence <paullawrence@google.com> Acked-by: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: Alexander Potapenko <glider@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Matthias Kaehlcke <mka@chromium.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/test_kasan.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/test_kasan.c b/lib/test_kasan.c
index ef1a3ac1397e..2724f86c4cef 100644
--- a/lib/test_kasan.c
+++ b/lib/test_kasan.c
@@ -472,6 +472,26 @@ static noinline void __init use_after_scope_test(void)
472 p[1023] = 1; 472 p[1023] = 1;
473} 473}
474 474
475static noinline void __init kasan_alloca_oob_left(void)
476{
477 volatile int i = 10;
478 char alloca_array[i];
479 char *p = alloca_array - 1;
480
481 pr_info("out-of-bounds to left on alloca\n");
482 *(volatile char *)p;
483}
484
485static noinline void __init kasan_alloca_oob_right(void)
486{
487 volatile int i = 10;
488 char alloca_array[i];
489 char *p = alloca_array + i;
490
491 pr_info("out-of-bounds to right on alloca\n");
492 *(volatile char *)p;
493}
494
475static int __init kmalloc_tests_init(void) 495static int __init kmalloc_tests_init(void)
476{ 496{
477 /* 497 /*
@@ -502,6 +522,8 @@ static int __init kmalloc_tests_init(void)
502 memcg_accounted_kmem_cache(); 522 memcg_accounted_kmem_cache();
503 kasan_stack_oob(); 523 kasan_stack_oob();
504 kasan_global_oob(); 524 kasan_global_oob();
525 kasan_alloca_oob_left();
526 kasan_alloca_oob_right();
505 ksize_unpoisons_memory(); 527 ksize_unpoisons_memory();
506 copy_user_test(); 528 copy_user_test();
507 use_after_scope_test(); 529 use_after_scope_test();