mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 12:36:41 +08:00 
			
		
		
		
	avcodec/microdvddec: add some memory checks
This commit is contained in:
		| @@ -261,7 +261,6 @@ static int microdvd_decode_frame(AVCodecContext *avctx, | ||||
|     AVSubtitle *sub = data; | ||||
|     AVBPrint new_line; | ||||
|     char c; | ||||
|     char *decoded_sub; | ||||
|     char *line = avpkt->data; | ||||
|     char *end = avpkt->data + avpkt->size; | ||||
|     struct microdvd_tag tags[sizeof(MICRODVD_TAGS) - 1] = {{0}}; | ||||
| @@ -301,18 +300,18 @@ static int microdvd_decode_frame(AVCodecContext *avctx, | ||||
|         } | ||||
|     } | ||||
|     if (new_line.len) { | ||||
|         av_bprintf(&new_line, "\r\n"); | ||||
|  | ||||
|         av_bprint_finalize(&new_line, &decoded_sub); | ||||
|         if (*decoded_sub) { | ||||
|         int ret; | ||||
|             int64_t start    = avpkt->pts; | ||||
|             int64_t duration = avpkt->duration; | ||||
|             int ts_start     = av_rescale_q(start,    avctx->time_base, (AVRational){1,100}); | ||||
|             int ts_duration  = duration != -1 ? | ||||
|                 av_rescale_q(duration, avctx->time_base, (AVRational){1,100}) : -1; | ||||
|             ff_ass_add_rect(sub, decoded_sub, ts_start, ts_duration, 0); | ||||
|         } | ||||
|         av_free(decoded_sub); | ||||
|  | ||||
|         av_bprintf(&new_line, "\r\n"); | ||||
|         ret = ff_ass_add_rect_bprint(sub, &new_line, ts_start, ts_duration, 0); | ||||
|         av_bprint_finalize(&new_line, NULL); | ||||
|         if (ret < 0) | ||||
|             return ret; | ||||
|     } | ||||
|  | ||||
|     *got_sub_ptr = sub->num_rects > 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Clément Bœsch
					Clément Bœsch