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

Unified Diff: runtime/szrt_asan.c

Issue 2086593002: Inserted local redzones. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: runtime/szrt_asan.c
diff --git a/runtime/szrt_asan.c b/runtime/szrt_asan.c
index 47b6abc8c3a054e623cfbecb065c0cf5c08740a8..038ad089afdc192233a1c89315e5c0a143b4718b 100644
--- a/runtime/szrt_asan.c
+++ b/runtime/szrt_asan.c
@@ -15,26 +15,48 @@
///
//===----------------------------------------------------------------------===//
+#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
+static unsigned behind_malloc = 0;
+
// TODO(tlively): Define and implement this library
void __asan_init(void) {
- printf("Set up shadow memory here\n");
- return;
+ if (behind_malloc)
+ return;
+ printf("set up shadow memory here\n");
}
void __asan_check(void *addr, int size) {
- printf("Check %d bytes at %p\n", size, addr);
- return;
+ if (behind_malloc)
+ return;
+ printf("check %d bytes at %p\n", size, addr);
}
void *__asan_malloc(size_t size) {
- printf("malloc() called with size %d\n", size);
- return malloc(size);
+ if (!behind_malloc)
Jim Stichnoth 2016/06/20 19:44:41 if (behind_malloc == 0) It's clearer when implici
tlively 2016/06/20 22:19:33 Done.
+ printf("malloc() called with size %d\n", size);
+ behind_malloc++;
Jim Stichnoth 2016/06/20 19:44:40 Generally prefer pre-increment and pre-decrement o
tlively 2016/06/20 22:19:33 Done.
+ void *ret = malloc(size);
+ behind_malloc--;
+ return ret;
}
void __asan_free(void *ptr) {
- printf("free() called on %p\n", ptr);
+ if (!behind_malloc)
+ printf("free() called on %p\n", ptr);
+ behind_malloc++;
free(ptr);
+ behind_malloc--;
+}
+
+void __asan_alloca(void *ptr, int size) {
+ if (!behind_malloc)
+ printf("alloca of %d bytes at %p\n", size, ptr);
+}
+
+void __asan_unalloca(void *ptr, int size) {
+ if (!behind_malloc)
+ printf("unalloca of %d bytes as %p\n", size, ptr);
}
« no previous file with comments | « docs/ASAN.rst ('k') | src/IceASanInstrumentation.h » ('j') | src/IceASanInstrumentation.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698