| 
																	
																	
																		
																	
																	
																 | 
																@@ -1326,6 +1326,10 @@ static int update_frag_index(MOVContext *c, int64_t offset) | 
															
														
														
													
														
															
																 | 
																 | 
																        return -1; | 
																 | 
																 | 
																        return -1; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < c->fc->nb_streams; i++) { | 
																 | 
																 | 
																    for (i = 0; i < c->fc->nb_streams; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        // Avoid building frag index if streams lack track id. | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if (c->fc->streams[i]->id < 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            return AVERROR_INVALIDDATA; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																        frag_stream_info[i].id = c->fc->streams[i]->id; | 
																 | 
																 | 
																        frag_stream_info[i].id = c->fc->streams[i]->id; | 
															
														
														
													
														
															
																 | 
																 | 
																        frag_stream_info[i].sidx_pts = AV_NOPTS_VALUE; | 
																 | 
																 | 
																        frag_stream_info[i].sidx_pts = AV_NOPTS_VALUE; | 
															
														
														
													
														
															
																 | 
																 | 
																        frag_stream_info[i].tfdt_dts = AV_NOPTS_VALUE; | 
																 | 
																 | 
																        frag_stream_info[i].tfdt_dts = AV_NOPTS_VALUE; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -4154,7 +4158,7 @@ static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom) | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    st = avformat_new_stream(c->fc, NULL); | 
																 | 
																 | 
																    st = avformat_new_stream(c->fc, NULL); | 
															
														
														
													
														
															
																 | 
																 | 
																    if (!st) return AVERROR(ENOMEM); | 
																 | 
																 | 
																    if (!st) return AVERROR(ENOMEM); | 
															
														
														
													
														
															
																 | 
																 | 
																    st->id = c->fc->nb_streams; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    st->id = -1; | 
															
														
														
													
														
															
																 | 
																 | 
																    sc = av_mallocz(sizeof(MOVStreamContext)); | 
																 | 
																 | 
																    sc = av_mallocz(sizeof(MOVStreamContext)); | 
															
														
														
													
														
															
																 | 
																 | 
																    if (!sc) return AVERROR(ENOMEM); | 
																 | 
																 | 
																    if (!sc) return AVERROR(ENOMEM); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -4438,6 +4442,11 @@ static int mov_read_tkhd(MOVContext *c, AVIOContext *pb, MOVAtom atom) | 
															
														
														
													
														
															
																 | 
																 | 
																    st = c->fc->streams[c->fc->nb_streams-1]; | 
																 | 
																 | 
																    st = c->fc->streams[c->fc->nb_streams-1]; | 
															
														
														
													
														
															
																 | 
																 | 
																    sc = st->priv_data; | 
																 | 
																 | 
																    sc = st->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    // Each stream (trak) should have exactly 1 tkhd. This catches bad files and | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    // avoids corrupting AVStreams mapped to an earlier tkhd. | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (st->id != -1) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        return AVERROR_INVALIDDATA; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    version = avio_r8(pb); | 
																 | 
																 | 
																    version = avio_r8(pb); | 
															
														
														
													
														
															
																 | 
																 | 
																    flags = avio_rb24(pb); | 
																 | 
																 | 
																    flags = avio_rb24(pb); | 
															
														
														
													
														
															
																 | 
																 | 
																    st->disposition |= (flags & MOV_TKHD_FLAG_ENABLED) ? AV_DISPOSITION_DEFAULT : 0; | 
																 | 
																 | 
																    st->disposition |= (flags & MOV_TKHD_FLAG_ENABLED) ? AV_DISPOSITION_DEFAULT : 0; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -4704,6 +4713,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom) | 
															
														
														
													
														
															
																 | 
																 | 
																            break; | 
																 | 
																 | 
																            break; | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    av_assert0(index_entry_pos <= st->nb_index_entries); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    avio_r8(pb); /* version */ | 
																 | 
																 | 
																    avio_r8(pb); /* version */ | 
															
														
														
													
														
															
																 | 
																 | 
																    flags = avio_rb24(pb); | 
																 | 
																 | 
																    flags = avio_rb24(pb); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |