Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-07-31 14:34:42 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-07-31 14:34:42 +0400
commit8c2550eed731cad11149da47c628cac1d8e4c67a (patch)
treea3d2c3135c752c68e194a76bd74833ea0b5962b6 /source/blender/avi/intern
parent9880f7fa507e57fa19191a8d5a03c6b6b11623d5 (diff)
prevent uninitialized memory use when writing avi's.
Diffstat (limited to 'source/blender/avi/intern')
-rw-r--r--source/blender/avi/intern/avi.c12
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;