diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2013-02-27 20:57:56 -0500 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2013-02-27 20:57:56 -0500 |
commit | 7a77b41d6a86e98ed60716ece907602ec530ac9c (patch) | |
tree | f422cc01299ae5334c3b8600b700847b8a7a94d5 /sys/shm | |
parent | a51b23916765913587c09876ef475a0ddfd46d33 (diff) | |
download | gstreamer-plugins-bad-7a77b41d6a86e98ed60716ece907602ec530ac9c.tar.gz |
shm: Make sure to not allocate blocks larger than the shared mem area
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=681359
Diffstat (limited to 'sys/shm')
-rw-r--r-- | sys/shm/shmalloc.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/shm/shmalloc.c b/sys/shm/shmalloc.c index 67bae732f..62c2bc751 100644 --- a/sys/shm/shmalloc.c +++ b/sys/shm/shmalloc.c @@ -102,13 +102,11 @@ shm_alloc_space_alloc_block (ShmAllocSpace * self, unsigned long size) prev_item = item; } - /* Did not find space before an existing block */ - if (self->blocks && !item) { - /* Return NULL if there is no big enough space, otherwise, there is space - * at the end */ - if (self->size - prev_end_offset < size) - return NULL; - } + /* Return NULL if there is no big enough space, otherwise, there is space + * at the end */ + assert (prev_end_offset <= self->size); + if (!item && self->size - prev_end_offset < size) + return NULL; block = spalloc_new (ShmAllocBlock); memset (block, 0, sizeof (ShmAllocBlock)); |