1*bf6dc715Smgorny# $NetBSD: t_asan_heap_overflow.sh,v 1.3 2019/01/29 19:56:37 mgorny Exp $ 29f0bdbd9Skamil# 3*bf6dc715Smgorny# Copyright (c) 2018, 2019 The NetBSD Foundation, Inc. 49f0bdbd9Skamil# All rights reserved. 59f0bdbd9Skamil# 69f0bdbd9Skamil# This code is derived from software contributed to The NetBSD Foundation 79f0bdbd9Skamil# by Siddharth Muralee. 89f0bdbd9Skamil# 99f0bdbd9Skamil# Redistribution and use in source and binary forms, with or without 109f0bdbd9Skamil# modification, are permitted provided that the following conditions 119f0bdbd9Skamil# are met: 129f0bdbd9Skamil# 1. Redistributions of source code must retain the above copyright 139f0bdbd9Skamil# notice, this list of conditions and the following disclaimer. 149f0bdbd9Skamil# 2. Redistributions in binary form must reproduce the above copyright 159f0bdbd9Skamil# notice, this list of conditions and the following disclaimer in the 169f0bdbd9Skamil# documentation and/or other materials provided with the distribution. 179f0bdbd9Skamil# 189f0bdbd9Skamil# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 199f0bdbd9Skamil# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 209f0bdbd9Skamil# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 219f0bdbd9Skamil# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 229f0bdbd9Skamil# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 239f0bdbd9Skamil# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 249f0bdbd9Skamil# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 259f0bdbd9Skamil# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 269f0bdbd9Skamil# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 279f0bdbd9Skamil# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 289f0bdbd9Skamil# POSSIBILITY OF SUCH DAMAGE. 299f0bdbd9Skamil# 309f0bdbd9Skamil 31*bf6dc715SmgornyASAN_CODE=' 329f0bdbd9Skamil#include <stdio.h> 339f0bdbd9Skamil#include <stdlib.h> 349f0bdbd9Skamil#include <string.h> 359f0bdbd9Skamilint foo(int); 36*bf6dc715Smgorny#ifndef PIC_MAIN 379f0bdbd9Skamilint foo(int index) { int *x = (int *)malloc(20); int res = x[index * 4]; free(x); return res;} 38*bf6dc715Smgorny#endif 39*bf6dc715Smgorny#ifndef PIC_FOO 409f0bdbd9Skamilint main(int argc, char **argv) {foo(argc + 19); printf("CHECK\n"); exit(0);} 41*bf6dc715Smgorny#endif 42*bf6dc715Smgorny' 439f0bdbd9Skamil 44*bf6dc715Smgornyasan_test_case heap_overflow "Heap Overflow example" heap-buffer-overflow 459f0bdbd9Skamil 469f0bdbd9Skamilatf_init_test_cases() 479f0bdbd9Skamil{ 48*bf6dc715Smgorny asan_add_test_cases heap_overflow 499f0bdbd9Skamil} 50