diff options
author | Iliyan Malchev <malchev@google.com> | 2011-08-08 11:24:41 -0700 |
---|---|---|
committer | Iliyan Malchev <malchev@google.com> | 2011-08-08 11:46:17 -0700 |
commit | a40968e9b9abcdcc042948ea73346b020279d4b7 (patch) | |
tree | 926da5b4447017617fcc255b490eaee5174a4a9a /tm.c | |
parent | 8558b0909d3f42288f488e6fd1341877c639a594 (diff) | |
download | android_hardware_ti_omap4-a40968e9b9abcdcc042948ea73346b020279d4b7.tar.gz android_hardware_ti_omap4-a40968e9b9abcdcc042948ea73346b020279d4b7.tar.bz2 android_hardware_ti_omap4-a40968e9b9abcdcc042948ea73346b020279d4b7.zip |
initial commit
Change-Id: I8f7a7eeece0e516efa486b77e9d97805c0e65d3e
Signed-off-by: Iliyan Malchev <malchev@google.com>
Diffstat (limited to 'tm.c')
-rw-r--r-- | tm.c | 54 |
1 files changed, 54 insertions, 0 deletions
@@ -0,0 +1,54 @@ +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> + +static void printf_log(const char *fmt, ...) +{ + va_list lst; + va_start(lst, fmt); + vprintf(fmt, lst); + va_end(lst); +} + +/* Override this for non-printf reporting */ +extern void (*malloc_log)(const char *fmt, ...); +static void ctor(void) __attribute__((constructor)); +static void ctor(void) +{ + malloc_log = printf_log; +} + +int main(void) +{ + char *ptr[6]; + char *uaf; + char *cf, *cb; + + ptr[0] = malloc(10); + ptr[1] = calloc(1,20); + ptr[2] = malloc(30); + ptr[3] = malloc(40); + ptr[4] = malloc(50); + ptr[5] = malloc(60); + + free(ptr[1]); + free(ptr[1]); + free(ptr[2]); + ptr[2] = realloc(ptr[2], 300); +// free(ptr[2]); +// free(ptr[2]); + + uaf = ptr[3]; + free(uaf); + uaf[5] = 'a'; + + cf = ptr[4]; + cf[-1] = 'a'; + + cb = ptr[5]; + cb[60] = 'a'; + + sleep(10); + + return 0; +} |