diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-07-31 14:34:42 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-07-31 14:34:42 +0400 |
commit | 8c2550eed731cad11149da47c628cac1d8e4c67a (patch) | |
tree | a3d2c3135c752c68e194a76bd74833ea0b5962b6 | |
parent | 9880f7fa507e57fa19191a8d5a03c6b6b11623d5 (diff) |
prevent uninitialized memory use when writing avi's.
-rw-r--r-- | source/blender/avi/intern/avi.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/source/blender/avi/intern/avi.c b/source/blender/avi/intern/avi.c index f64b693fb1c..1c79c9b4237 100644 --- a/source/blender/avi/intern/avi.c +++ b/source/blender/avi/intern/avi.c @@ -965,11 +965,15 @@ AviError AVI_write_frame(AviMovie *movie, int frame_num, ...) /* Allocate the new memory for the index entry */ if (frame_num + 1 > movie->index_entries) { - temp = (AviIndexEntry *) MEM_mallocN((frame_num + 1) * - (movie->header->Streams + 1) * sizeof(AviIndexEntry), "newidxentry"); + const size_t entry_size = (movie->header->Streams + 1) * sizeof(AviIndexEntry); + if (movie->entries != NULL) { - memcpy(temp, movie->entries, movie->index_entries * (movie->header->Streams + 1) * sizeof(AviIndexEntry)); - MEM_freeN(movie->entries); + temp = (AviIndexEntry *)MEM_reallocN(movie->entries, (frame_num + 1) * entry_size); + /* clear new bytes */ + memset(&temp[movie->index_entries], 0, ((frame_num + 1) - movie->index_entries) * entry_size); + } + else { + temp = (AviIndexEntry *) MEM_callocN((frame_num + 1) * entry_size, "newidxentry"); } movie->entries = temp; |