From 5a8e994287d8ef181c0a5eac537547d7059b4524 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 25 Dec 2011 18:43:58 +0100 Subject: [PATCH] mem: add av_max_alloc() to limit the maximum amount that may be allocated in one piece Signed-off-by: Michael Niedermayer --- libavutil/avutil.h | 2 +- libavutil/mem.c | 10 +++++++--- libavutil/mem.h | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libavutil/avutil.h b/libavutil/avutil.h index 204286a762..4dc6eb0875 100644 --- a/libavutil/avutil.h +++ b/libavutil/avutil.h @@ -154,7 +154,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 51 -#define LIBAVUTIL_VERSION_MINOR 32 +#define LIBAVUTIL_VERSION_MINOR 33 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ diff --git a/libavutil/mem.c b/libavutil/mem.c index 4acc43b2ef..f965339ce9 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -65,7 +65,11 @@ void free(void *ptr); memory allocator. You do not need to suppress this file because the linker will do it automatically. */ -#define MAX_MALLOC_SIZE INT_MAX +static size_t max_alloc_size= INT_MAX; + +void av_max_alloc(size_t max){ + max_alloc_size = max; +} void *av_malloc(size_t size) { @@ -75,7 +79,7 @@ void *av_malloc(size_t size) #endif /* let's disallow possible ambiguous cases */ - if (size > (MAX_MALLOC_SIZE-32)) + if (size > (max_alloc_size-32)) return NULL; #if CONFIG_MEMALIGN_HACK @@ -130,7 +134,7 @@ void *av_realloc(void *ptr, size_t size) #endif /* let's disallow possible ambiguous cases */ - if (size > (MAX_MALLOC_SIZE-16)) + if (size > (max_alloc_size-32)) return NULL; #if CONFIG_MEMALIGN_HACK diff --git a/libavutil/mem.h b/libavutil/mem.h index f148c637bb..c6c907ea08 100644 --- a/libavutil/mem.h +++ b/libavutil/mem.h @@ -176,6 +176,11 @@ static inline int av_size_mult(size_t a, size_t b, size_t *r) return 0; } +/** + * Set the maximum size that may me allocated in one block. + */ +void av_max_alloc(size_t max); + /** * @} */