Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0ef47a6 authored by Paul Lawrence's avatar Paul Lawrence
Browse files

UPSTREAM: kasan: add tests for alloca poisoning

Link: http://lkml.kernel.org/r/20171204191735.132544-5-paullawrence@google.com


Signed-off-by: default avatarGreg Hackmann <ghackmann@google.com>
Signed-off-by: default avatarPaul Lawrence <paullawrence@google.com>
Acked-by: default avatarAndrey 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>

(cherry-picked from 00a14294bb33af533f7ac002fb20623fdd8ea0d7)
Change-Id: I2c3b607d67b4a788000c62ce920cfd603f42fa06
Signed-off-by: default avatarPaul Lawrence <paullawrence@google.com>
parent 9351dcdb
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -440,6 +440,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)
{
	/*
@@ -469,6 +489,8 @@ static int __init kmalloc_tests_init(void)
	kmem_cache_oob();
	kasan_stack_oob();
	kasan_global_oob();
	kasan_alloca_oob_left();
	kasan_alloca_oob_right();
	ksize_unpoisons_memory();
	copy_user_test();
	use_after_scope_test();