From dd41abf62990159d8db80f782cf8e06bd67df90b Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Tue, 17 Apr 2018 17:54:35 +0200 Subject: [PATCH] avilib: 0-initialize all allocated memory Required for properly freeing it later. --- lib/avilib-0.6.10/avilib.c | 68 +++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/lib/avilib-0.6.10/avilib.c b/lib/avilib-0.6.10/avilib.c index c90ac4746..775093e74 100644 --- a/lib/avilib-0.6.10/avilib.c +++ b/lib/avilib-0.6.10/avilib.c @@ -251,7 +251,7 @@ static int avi_ixnn_entry(avi_t *AVI, avistdindex_chunk *ch, avisuperindex_entry { int bl, k; unsigned int max = ch->nEntriesInUse * sizeof (uint32_t) * ch->wLongsPerEntry + 24; // header - char *ix00 = malloc (max); + char *ix00 = calloc(1, max); char dfcc[5]; memcpy (dfcc, ch->fcc, 4); dfcc[4] = 0; @@ -302,7 +302,7 @@ static int avi_init_super_index(avi_t *AVI, char *idxtag, avisuperindex_chunk ** avisuperindex_chunk *sil = NULL; - if ((sil = (avisuperindex_chunk *) malloc (sizeof (avisuperindex_chunk))) == NULL) { + if ((sil = (avisuperindex_chunk *) calloc(1, sizeof (avisuperindex_chunk))) == NULL) { AVI_errno = AVI_ERR_NO_MEM; return -1; } @@ -316,20 +316,20 @@ static int avi_init_super_index(avi_t *AVI, char *idxtag, avisuperindex_chunk ** memset (sil->dwReserved, 0, sizeof (sil->dwReserved)); // NR_IXNN_CHUNKS == allow 1024 indices which means 1024 GB files -- arbitrary - sil->aIndex = malloc (sil->wLongsPerEntry * NR_IXNN_CHUNKS * sizeof (uint32_t)); + sil->aIndex = calloc(1, sil->wLongsPerEntry * NR_IXNN_CHUNKS * sizeof (uint32_t)); if (!sil->aIndex) { AVI_errno = AVI_ERR_NO_MEM; return -1; } memset (sil->aIndex, 0, sil->wLongsPerEntry * NR_IXNN_CHUNKS * sizeof (uint32_t)); - sil->stdindex = malloc (NR_IXNN_CHUNKS * sizeof (avistdindex_chunk *)); + sil->stdindex = calloc(1, NR_IXNN_CHUNKS * sizeof (avistdindex_chunk *)); if (!sil->stdindex) { AVI_errno = AVI_ERR_NO_MEM; return -1; } for (k = 0; k < NR_IXNN_CHUNKS; k++) { - sil->stdindex[k] = malloc (sizeof (avistdindex_chunk)); + sil->stdindex[k] = calloc(1, sizeof (avistdindex_chunk)); // gets rewritten later sil->stdindex[k]->qwBaseOffset = (uint64_t)k * NEW_RIFF_THRES; } @@ -339,7 +339,7 @@ static int avi_init_super_index(avi_t *AVI, char *idxtag, avisuperindex_chunk ** return 0; } -// fills an alloc'ed stdindex structure and mallocs some entries for the actual chunks +// fills an alloc'ed stdindex structure and callocs some entries for the actual chunks static int avi_add_std_index(avi_t *AVI, void *idxtag, void *strtag, avistdindex_chunk *stdil) { @@ -357,7 +357,7 @@ static int avi_add_std_index(avi_t *AVI, void *idxtag, void *strtag, //stdil->qwBaseOffset = AVI->video_superindex->aIndex[ cur_std_idx ]->qwOffset; - stdil->aIndex = malloc(stdil->dwSize * sizeof (uint32_t) * stdil->wLongsPerEntry); + stdil->aIndex = calloc(1, stdil->dwSize * sizeof (uint32_t) * stdil->wLongsPerEntry); if (!stdil->aIndex) { AVI_errno = AVI_ERR_NO_MEM; @@ -656,7 +656,7 @@ avi_t* AVI_open_output_file(void * filename) /* Allocate the avi_t struct and zero it */ - AVI = (avi_t *) malloc(sizeof(avi_t)); + AVI = (avi_t *) calloc(1, sizeof(avi_t)); if(AVI==0) { AVI_errno = AVI_ERR_NO_MEM; @@ -1075,8 +1075,8 @@ static int avi_parse_comments (int fd, char *buf, int space_left) return -1; } - if ( !(data = malloc(st.st_size*sizeof(char)+1)) ) { - fprintf(stderr, "malloc failed\n"); + if ( !(data = calloc(1, st.st_size*sizeof(char)+1)) ) { + fprintf(stderr, "calloc failed\n"); return -1; } @@ -2007,7 +2007,7 @@ avi_t *AVI_open_input_indexfile(void *filename, int getIndex, const char *indexf /* Create avi_t structure */ - AVI = (avi_t *) malloc(sizeof(avi_t)); + AVI = (avi_t *) calloc(1, sizeof(avi_t)); if(AVI==NULL) { AVI_errno = AVI_ERR_NO_MEM; @@ -2051,7 +2051,7 @@ avi_t *AVI_open_indexfd(int fd, int getIndex, const char *indexfile) /* Create avi_t structure */ - AVI = (avi_t *) malloc(sizeof(avi_t)); + AVI = (avi_t *) calloc(1, sizeof(avi_t)); if(AVI==NULL) { AVI_errno = AVI_ERR_NO_MEM; @@ -2085,7 +2085,7 @@ avi_t *AVI_open_input_file(void *filename, int getIndex) /* Create avi_t structure */ - AVI = (avi_t *) malloc(sizeof(avi_t)); + AVI = (avi_t *) calloc(1, sizeof(avi_t)); if(AVI==NULL) { AVI_errno = AVI_ERR_NO_MEM; @@ -2124,7 +2124,7 @@ avi_t *AVI_open_fd(int fd, int getIndex) /* Create avi_t structure */ - AVI = (avi_t *) malloc(sizeof(avi_t)); + AVI = (avi_t *) calloc(1, sizeof(avi_t)); if(AVI==NULL) { AVI_errno = AVI_ERR_NO_MEM; @@ -2213,12 +2213,12 @@ int avi_parse_index_from_file(avi_t *AVI, const char *filename) for(j=0; janum; ++j) AVI->track[j].audio_chunks = aud_chunks[j]; if(AVI->video_frames==0) ERR_EXIT(AVI_ERR_NO_VIDS); - AVI->video_index = (video_index_entry *) malloc(vid_chunks*sizeof(video_index_entry)); + AVI->video_index = (video_index_entry *) calloc(1, vid_chunks*sizeof(video_index_entry)); if(AVI->video_index==0) ERR_EXIT(AVI_ERR_NO_MEM); for(j=0; janum; ++j) { if(AVI->track[j].audio_chunks) { - AVI->track[j].audio_index = (audio_index_entry *) malloc(aud_chunks[j]*sizeof(audio_index_entry)); + AVI->track[j].audio_index = (audio_index_entry *) calloc(1, aud_chunks[j]*sizeof(audio_index_entry)); if(AVI->track[j].audio_index==0) ERR_EXIT(AVI_ERR_NO_MEM); } } @@ -2324,7 +2324,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) if(strncasecmp(data,"hdrl",4) == 0) { hdrl_len = n; - hdrl_data = (unsigned char *) malloc(n); + hdrl_data = (unsigned char *) calloc(1, n); if(hdrl_data==0) ERR_EXIT(AVI_ERR_NO_MEM); // offset of header @@ -2347,7 +2347,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) break if this is not the case */ AVI->n_idx = AVI->max_idx = n/16; - AVI->idx = (unsigned char((*)[16]) ) malloc(n); + AVI->idx = (unsigned char((*)[16]) ) calloc(1, n); if(AVI->idx==0) ERR_EXIT(AVI_ERR_NO_MEM) if(avi_read(AVI->fdes, (char *) AVI->idx, n) != n ) { free ( AVI->idx); AVI->idx=NULL; @@ -2466,7 +2466,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) if(lasttag == 1) { uint32_t ck_size = str2ulong(hdrl_data + i - 4); - AVI->bitmap_info_header = (alBITMAPINFOHEADER *)malloc(ck_size); + AVI->bitmap_info_header = (alBITMAPINFOHEADER *)calloc(1, ck_size); if (AVI->bitmap_info_header != NULL) { memcpy(AVI->bitmap_info_header, hdrl_data + i, ck_size); long2str(&AVI->bitmap_info_header->bi_size, @@ -2494,7 +2494,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) wfes = hdrl_len - i; else wfes = sizeof(alWAVEFORMATEX); - wfe = (alWAVEFORMATEX *)malloc(sizeof(alWAVEFORMATEX)); + wfe = (alWAVEFORMATEX *)calloc(1, sizeof(alWAVEFORMATEX)); if (wfe != NULL) { memset(wfe, 0, sizeof(alWAVEFORMATEX)); memcpy(wfe, hdrl_data + i, wfes); @@ -2538,7 +2538,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) a = (char *)(hdrl_data+i); - AVI->video_superindex = (avisuperindex_chunk *) malloc (sizeof (avisuperindex_chunk)); + AVI->video_superindex = (avisuperindex_chunk *) calloc(1, sizeof (avisuperindex_chunk)); memcpy (AVI->video_superindex->fcc, a, 4); a += 4; AVI->video_superindex->dwSize = str2ulong(a); a += 4; AVI->video_superindex->wLongsPerEntry = str2ushort(a); a += 2; @@ -2553,7 +2553,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) if (AVI->video_superindex->bIndexSubType != 0) {fprintf(stderr, "Invalid Header, bIndexSubType != 0\n"); } AVI->video_superindex->aIndex = - malloc (AVI->video_superindex->wLongsPerEntry * AVI->video_superindex->nEntriesInUse * sizeof (uint32_t)); + calloc(1, AVI->video_superindex->wLongsPerEntry * AVI->video_superindex->nEntriesInUse * sizeof (uint32_t)); // position of ix## chunks for (j=0; jvideo_superindex->nEntriesInUse; ++j) { @@ -2591,7 +2591,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) a = (char *)(hdrl_data+i); - AVI->track[AVI->aptr].audio_superindex = (avisuperindex_chunk *) malloc (sizeof (avisuperindex_chunk)); + AVI->track[AVI->aptr].audio_superindex = (avisuperindex_chunk *) calloc(1, sizeof (avisuperindex_chunk)); memcpy (AVI->track[AVI->aptr].audio_superindex->fcc, a, 4); a += 4; AVI->track[AVI->aptr].audio_superindex->dwSize = str2ulong(a); a += 4; AVI->track[AVI->aptr].audio_superindex->wLongsPerEntry = str2ushort(a); a += 2; @@ -2606,7 +2606,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) if (AVI->track[AVI->aptr].audio_superindex->bIndexSubType != 0) {fprintf(stderr, "Invalid Header, bIndexSubType != 0\n"); } AVI->track[AVI->aptr].audio_superindex->aIndex = - malloc (AVI->track[AVI->aptr].audio_superindex->wLongsPerEntry * + calloc(1, AVI->track[AVI->aptr].audio_superindex->wLongsPerEntry * AVI->track[AVI->aptr].audio_superindex->nEntriesInUse * sizeof (uint32_t)); // position of ix## chunks @@ -2640,7 +2640,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) a = (char *)(hdrl_data+i); - AVI->ttrack[AVI->tptr].audio_superindex = (avisuperindex_chunk *) malloc (sizeof (avisuperindex_chunk)); + AVI->ttrack[AVI->tptr].audio_superindex = (avisuperindex_chunk *) calloc(1, sizeof (avisuperindex_chunk)); memcpy (AVI->ttrack[AVI->tptr].audio_superindex->fcc, a, 4); a += 4; AVI->ttrack[AVI->tptr].audio_superindex->dwSize = str2ulong(a); a += 4; AVI->ttrack[AVI->tptr].audio_superindex->wLongsPerEntry = str2ushort(a); a += 2; @@ -2655,7 +2655,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) if (AVI->ttrack[AVI->tptr].audio_superindex->bIndexSubType != 0) {fprintf(stderr, "Invalid Header, bIndexSubType != 0\n"); } AVI->ttrack[AVI->tptr].audio_superindex->aIndex = - malloc (AVI->ttrack[AVI->tptr].audio_superindex->wLongsPerEntry * + calloc(1, AVI->ttrack[AVI->tptr].audio_superindex->wLongsPerEntry * AVI->ttrack[AVI->tptr].audio_superindex->nEntriesInUse * sizeof (uint32_t)); // position of ix## chunks @@ -2824,7 +2824,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) for (j=0; jvideo_superindex->nEntriesInUse; j++) { // read from file - chunk_start = en = malloc (AVI->video_superindex->aIndex[j].dwSize+odml_hrdl_len); + chunk_start = en = calloc(1, AVI->video_superindex->aIndex[j].dwSize+odml_hrdl_len); if (xio_lseek(AVI->fdes, AVI->video_superindex->aIndex[j].qwOffset, SEEK_SET) == (int64_t)-1) { /* fprintf(stderr, "(%s) cannot seek to 0x%llx\n", __FILE__, */ @@ -2905,7 +2905,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) for (j=0; jtrack[audtr].audio_superindex->nEntriesInUse; j++) { // read from file - chunk_start = en = malloc (AVI->track[audtr].audio_superindex->aIndex[j].dwSize+odml_hrdl_len); + chunk_start = en = calloc(1, AVI->track[audtr].audio_superindex->aIndex[j].dwSize+odml_hrdl_len); if (xio_lseek(AVI->fdes, AVI->track[audtr].audio_superindex->aIndex[j].qwOffset, SEEK_SET) == (int64_t)-1) { /* fprintf(stderr, "(%s) cannot seek to 0x%llx\n", __FILE__, (unsigned long long)AVI->track[audtr].audio_superindex->aIndex[j].qwOffset); */ @@ -2972,7 +2972,7 @@ int avi_parse_input_file(avi_t *AVI, int getIndex) for (j=0; jttrack[audtr].audio_superindex->nEntriesInUse; j++) { // read from file - chunk_start = en = malloc (AVI->ttrack[audtr].audio_superindex->aIndex[j].dwSize+odml_hrdl_len); + chunk_start = en = calloc(1, AVI->ttrack[audtr].audio_superindex->aIndex[j].dwSize+odml_hrdl_len); if (xio_lseek(AVI->fdes, AVI->ttrack[audtr].audio_superindex->aIndex[j].qwOffset, SEEK_SET) == (int64_t)-1) { /* fprintf(stderr, "(%s) cannot seek to 0x%llx\n", __FILE__, (unsigned long long)AVI->ttrack[audtr].audio_superindex->aIndex[j].qwOffset); */ @@ -3043,13 +3043,13 @@ multiple_riff: nai[0] = AVI->track[0].audio_chunks = AVI->total_frames; for(j=1; janum; ++j) AVI->track[j].audio_chunks = 0; - AVI->video_index = (video_index_entry *) malloc(nvi*sizeof(video_index_entry)); + AVI->video_index = (video_index_entry *) calloc(1, nvi*sizeof(video_index_entry)); if(AVI->video_index==0) ERR_EXIT(AVI_ERR_NO_MEM); for(j=0; janum; ++j) { if(AVI->track[j].audio_chunks) { - AVI->track[j].audio_index = (audio_index_entry *) malloc((nai[j]+1)*sizeof(audio_index_entry)); + AVI->track[j].audio_index = (audio_index_entry *) calloc(1, (nai[j]+1)*sizeof(audio_index_entry)); memset(AVI->track[j].audio_index, 0, (nai[j]+1)*(sizeof(audio_index_entry))); if(AVI->track[j].audio_index==0) ERR_EXIT(AVI_ERR_NO_MEM); } @@ -3160,12 +3160,12 @@ multiple_riff: if(AVI->video_frames==0) ERR_EXIT(AVI_ERR_NO_VIDS); - AVI->video_index = (video_index_entry *) malloc(nvi*sizeof(video_index_entry)); + AVI->video_index = (video_index_entry *) calloc(1, nvi*sizeof(video_index_entry)); if(AVI->video_index==0) ERR_EXIT(AVI_ERR_NO_MEM); for(j=0; janum; ++j) { if(AVI->track[j].audio_chunks) { - AVI->track[j].audio_index = (audio_index_entry *) malloc((nai[j]+1)*sizeof(audio_index_entry)); + AVI->track[j].audio_index = (audio_index_entry *) calloc(1, (nai[j]+1)*sizeof(audio_index_entry)); memset(AVI->track[j].audio_index, 0, (nai[j]+1)*(sizeof(audio_index_entry))); if(AVI->track[j].audio_index==0) ERR_EXIT(AVI_ERR_NO_MEM); } @@ -3656,7 +3656,7 @@ char *(avi_errors[]) = /* 5 */ "avilib - Error writing index (file may still be useable)", /* 6 */ "avilib - Error closing AVI file", /* 7 */ "avilib - Operation (read/write) not permitted", - /* 8 */ "avilib - Out of memory (malloc failed)", + /* 8 */ "avilib - Out of memory (calloc failed)", /* 9 */ "avilib - Not an AVI file", /* 10 */ "avilib - AVI file has no header std::list (corrupted?)", /* 11 */ "avilib - AVI file has no MOVI std::list (corrupted?)",