mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-10-31 04:26:37 +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; |     AVSubtitle *sub = data; | ||||||
|     AVBPrint new_line; |     AVBPrint new_line; | ||||||
|     char c; |     char c; | ||||||
|     char *decoded_sub; |  | ||||||
|     char *line = avpkt->data; |     char *line = avpkt->data; | ||||||
|     char *end = avpkt->data + avpkt->size; |     char *end = avpkt->data + avpkt->size; | ||||||
|     struct microdvd_tag tags[sizeof(MICRODVD_TAGS) - 1] = {{0}}; |     struct microdvd_tag tags[sizeof(MICRODVD_TAGS) - 1] = {{0}}; | ||||||
| @@ -301,18 +300,18 @@ static int microdvd_decode_frame(AVCodecContext *avctx, | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     if (new_line.len) { |     if (new_line.len) { | ||||||
|         av_bprintf(&new_line, "\r\n"); |         int ret; | ||||||
|  |  | ||||||
|         av_bprint_finalize(&new_line, &decoded_sub); |  | ||||||
|         if (*decoded_sub) { |  | ||||||
|             int64_t start    = avpkt->pts; |             int64_t start    = avpkt->pts; | ||||||
|             int64_t duration = avpkt->duration; |             int64_t duration = avpkt->duration; | ||||||
|             int ts_start     = av_rescale_q(start,    avctx->time_base, (AVRational){1,100}); |             int ts_start     = av_rescale_q(start,    avctx->time_base, (AVRational){1,100}); | ||||||
|             int ts_duration  = duration != -1 ? |             int ts_duration  = duration != -1 ? | ||||||
|                 av_rescale_q(duration, avctx->time_base, (AVRational){1,100}) : -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_bprintf(&new_line, "\r\n"); | ||||||
|         av_free(decoded_sub); |         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; |     *got_sub_ptr = sub->num_rects > 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Clément Bœsch
					Clément Bœsch