|
@@ -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();
|