diff options
| author | Paul Lawrence <paullawrence@google.com> | 2018-02-06 18:36:16 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-02-06 21:32:42 -0500 |
| commit | 00a14294bb33af533f7ac002fb20623fdd8ea0d7 (patch) | |
| tree | e592ca6fee0644e4d28ce9cb99880f8468e78554 /lib | |
| parent | 342061ee4ef3d80001d1ae494378f3979c861dba (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.c | 22 |
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 | ||
| 475 | static 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 | |||
| 485 | static 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 | |||
| 475 | static int __init kmalloc_tests_init(void) | 495 | static 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(); |
