Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(803)

Side by Side Diff: runtime/szrt_asan.c

Issue 2101173002: Added tests for bug detection on locals (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fixed test file comment Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tests_lit/asan_tests/errors.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/runtime/szrt_asan.c - AddressSanitizer Runtime -----*- C -*-===// 1 //===- subzero/runtime/szrt_asan.c - AddressSanitizer Runtime -----*- C -*-===//
2 // 2 //
3 // The Subzero Code Generator 3 // The Subzero Code Generator
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 /// 9 ///
10 /// \file 10 /// \file
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 else 72 else
73 printf("protected bad region\n"); 73 printf("protected bad region\n");
74 } 74 }
75 75
76 void __asan_check(char *ptr, int size) { 76 void __asan_check(char *ptr, int size) {
77 printf("check %d bytes at %p\n", size, ptr); 77 printf("check %d bytes at %p\n", size, ptr);
78 char *end = ptr + size; 78 char *end = ptr + size;
79 for (; ptr < end; ++ptr) { 79 for (; ptr < end; ++ptr) {
80 char shadow = *(char *)MEM2SHADOW(ptr); 80 char shadow = *(char *)MEM2SHADOW(ptr);
81 printf("checking %p with shadow %d\n", ptr, shadow); 81 printf("checking %p with shadow %d\n", ptr, shadow);
82 assert(shadow == 0 || (shadow > 0 && SHADOW_OFFSET(ptr) <= shadow)); 82 if (shadow != 0 && (shadow < 0 || SHADOW_OFFSET(ptr) > shadow)) {
83 fprintf(stderr, "Illegal access of %d bytes at %p\n", size, ptr);
84 abort();
85 }
83 } 86 }
84 } 87 }
85 88
86 void *__asan_malloc(size_t size) { 89 void *__asan_malloc(size_t size) {
87 printf("malloc() called with size %d\n", size); 90 printf("malloc() called with size %d\n", size);
88 size_t padding = 91 size_t padding =
89 (IS_SHADOW_ALIGNED(size)) ? 0 : SHADOW_SCALE - SHADOW_OFFSET(size); 92 (IS_SHADOW_ALIGNED(size)) ? 0 : SHADOW_SCALE - SHADOW_OFFSET(size);
90 size_t rz_left_size = RZ_SIZE; 93 size_t rz_left_size = RZ_SIZE;
91 size_t rz_right_size = RZ_SIZE + padding; 94 size_t rz_right_size = RZ_SIZE + padding;
92 void *rz_left; 95 void *rz_left;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 assert(size < 2 * RZ_SIZE); 142 assert(size < 2 * RZ_SIZE);
140 printf("unpoison %d bytes at %p: %p - %p\n", size, ptr, MEM2SHADOW(ptr), 143 printf("unpoison %d bytes at %p: %p - %p\n", size, ptr, MEM2SHADOW(ptr),
141 MEM2SHADOW(end)); 144 MEM2SHADOW(end));
142 *(char *)MEM2SHADOW(ptr) = 0; 145 *(char *)MEM2SHADOW(ptr) = 0;
143 ptr += SHADOW_OFFSET(size); 146 ptr += SHADOW_OFFSET(size);
144 assert(IS_SHADOW_ALIGNED(ptr)); 147 assert(IS_SHADOW_ALIGNED(ptr));
145 for (; ptr != end; ptr += SHADOW_SCALE) { 148 for (; ptr != end; ptr += SHADOW_SCALE) {
146 *(char *)MEM2SHADOW(ptr) = 0; 149 *(char *)MEM2SHADOW(ptr) = 0;
147 } 150 }
148 } 151 }
OLDNEW
« no previous file with comments | « no previous file | tests_lit/asan_tests/errors.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698