kasan: add tests for alloca poisoning
authorPaul Lawrence <paullawrence@google.com>
Tue, 6 Feb 2018 23:36:16 +0000 (15:36 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Feb 2018 02:32:42 +0000 (18:32 -0800)
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>
lib/test_kasan.c

index ef1a3ac..2724f86 100644 (file)
@@ -472,6 +472,26 @@ static noinline void __init use_after_scope_test(void)
        p[1023] = 1;
 }
 
+static noinline void __init kasan_alloca_oob_left(void)
+{
+       volatile int i = 10;
+       char alloca_array[i];
+       char *p = alloca_array - 1;
+
+       pr_info("out-of-bounds to left on alloca\n");
+       *(volatile char *)p;
+}
+
+static noinline void __init kasan_alloca_oob_right(void)
+{
+       volatile int i = 10;
+       char alloca_array[i];
+       char *p = alloca_array + i;
+
+       pr_info("out-of-bounds to right on alloca\n");
+       *(volatile char *)p;
+}
+
 static int __init kmalloc_tests_init(void)
 {
        /*
@@ -502,6 +522,8 @@ static int __init kmalloc_tests_init(void)
        memcg_accounted_kmem_cache();
        kasan_stack_oob();
        kasan_global_oob();
+       kasan_alloca_oob_left();
+       kasan_alloca_oob_right();
        ksize_unpoisons_memory();
        copy_user_test();
        use_after_scope_test();