From 7c84e7d33762a4bccc0002476a3b20e0b8f26fcc Mon Sep 17 00:00:00 2001 From: Clément Bœsch Date: Mon, 2 Jul 2012 19:31:35 +0200 Subject: mem: heap memory poisoning. Enable it by default with FATE. limitation: not random, and not supported with realloc. --- configure | 2 ++ libavutil/mem.c | 8 +++++++- tests/fate.sh | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/configure b/configure index a1346fac3f..cb8a04d2bb 100755 --- a/configure +++ b/configure @@ -286,6 +286,7 @@ Developer options (useful when working on FFmpeg itself): --disable-stripping disable stripping of executables and shared libraries --assert-level=level 0(default), 1 or 2, amount of assertion testing, 2 causes a slowdown at runtime. + --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory leaks and errors, using the specified valgrind binary. Cannot be combined with --target-exec @@ -1080,6 +1081,7 @@ CONFIG_LIST=" lsp mdct memalign_hack + memory_poisoning mpegaudiodsp network nonfree diff --git a/libavutil/mem.c b/libavutil/mem.c index 385ace0702..8ec226b17a 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -125,8 +125,14 @@ void *av_malloc(size_t size) #else ptr = malloc(size); #endif - if(!ptr && !size) + if(!ptr && !size) { + size = 1; ptr= av_malloc(1); + } +#if CONFIG_MEMORY_POISONING + if (ptr) + memset(ptr, 0x2a, size); +#endif return ptr; } diff --git a/tests/fate.sh b/tests/fate.sh index a7b15cd1b0..0bf10ab853 100755 --- a/tests/fate.sh +++ b/tests/fate.sh @@ -45,6 +45,7 @@ configure()( --prefix="${inst}" \ --samples="${samples}" \ --enable-gpl \ + --enable-memory-poisoning \ ${arch:+--arch=$arch} \ ${cpu:+--cpu="$cpu"} \ ${cross_prefix:+--cross-prefix="$cross_prefix"} \ -- cgit v1.2.3