aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/mpegtsenc.c
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2015-11-28 08:27:39 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2015-12-03 17:43:30 +0100
commit64f7db554ee83846f207e82a08946a6a5a6acfe2 (patch)
tree707a18bd87f416dcd9a458e659b528228660409b /libavformat/mpegtsenc.c
parentfff7f2df31e942edd33287a3570466ebb9f91811 (diff)
downloadandroid_external_ffmpeg-64f7db554ee83846f207e82a08946a6a5a6acfe2.tar.gz
android_external_ffmpeg-64f7db554ee83846f207e82a08946a6a5a6acfe2.tar.bz2
android_external_ffmpeg-64f7db554ee83846f207e82a08946a6a5a6acfe2.zip
mpegencts: Fix overflow in cbr mode period calculations
ts->mux_rate is int (signed 32-bit) type. The period calculations will start to overflow when mux_rate > 5mbps. This fixes overflows by converting first to 64-bit type. Fixes #5044. Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavformat/mpegtsenc.c')
-rw-r--r--libavformat/mpegtsenc.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c
index 468bad497f..8591e8cde6 100644
--- a/libavformat/mpegtsenc.c
+++ b/libavformat/mpegtsenc.c
@@ -852,11 +852,11 @@ static int mpegts_write_header(AVFormatContext *s)
ts_st = pcr_st->priv_data;
if (ts->mux_rate > 1) {
- service->pcr_packet_period = (ts->mux_rate * ts->pcr_period) /
+ service->pcr_packet_period = (int64_t)ts->mux_rate * ts->pcr_period /
(TS_PACKET_SIZE * 8 * 1000);
- ts->sdt_packet_period = (ts->mux_rate * SDT_RETRANS_TIME) /
+ ts->sdt_packet_period = (int64_t)ts->mux_rate * SDT_RETRANS_TIME /
(TS_PACKET_SIZE * 8 * 1000);
- ts->pat_packet_period = (ts->mux_rate * PAT_RETRANS_TIME) /
+ ts->pat_packet_period = (int64_t)ts->mux_rate * PAT_RETRANS_TIME /
(TS_PACKET_SIZE * 8 * 1000);
if (ts->copyts < 1)