X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fwebvttenc.c;h=2bc86041a7834a9fa73c72995e2fd320b7e06664;hb=7b6012efaae549b8e624876dba9550cb003f98b1;hp=4827de05d5a35ba7105e0c0cd9f08db342aeea60;hpb=ce265b0bf5d0c77a092a1f5fbeb652c7cdea5fc7;p=ffmpeg diff --git a/libavformat/webvttenc.c b/libavformat/webvttenc.c index 4827de05d5a..2bc86041a78 100644 --- a/libavformat/webvttenc.c +++ b/libavformat/webvttenc.c @@ -38,7 +38,7 @@ static void webvtt_write_time(AVIOContext *pb, int64_t millisec) min -= 60 * hour; if (hour > 0) - avio_printf(pb, "%"PRId64":", hour); + avio_printf(pb, "%02"PRId64":", hour); avio_printf(pb, "%02"PRId64":%02"PRId64".%03"PRId64"", min, sec, millisec); } @@ -57,7 +57,6 @@ static int webvtt_write_header(AVFormatContext *ctx) avpriv_set_pts_info(s, 64, 1, 1000); avio_printf(pb, "WEBVTT\n"); - avio_flush(pb); return 0; } @@ -65,7 +64,8 @@ static int webvtt_write_header(AVFormatContext *ctx) static int webvtt_write_packet(AVFormatContext *ctx, AVPacket *pkt) { AVIOContext *pb = ctx->pb; - int id_size, settings_size; + buffer_size_t id_size, settings_size; + int id_size_int, settings_size_int; uint8_t *id, *settings; avio_printf(pb, "\n"); @@ -73,8 +73,12 @@ static int webvtt_write_packet(AVFormatContext *ctx, AVPacket *pkt) id = av_packet_get_side_data(pkt, AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size); - if (id && id_size > 0) - avio_printf(pb, "%.*s\n", id_size, id); + if (id_size > INT_MAX) + return AVERROR(EINVAL); + + id_size_int = id_size; + if (id && id_size_int > 0) + avio_printf(pb, "%.*s\n", id_size_int, id); webvtt_write_time(pb, pkt->pts); avio_printf(pb, " --> "); @@ -83,8 +87,12 @@ static int webvtt_write_packet(AVFormatContext *ctx, AVPacket *pkt) settings = av_packet_get_side_data(pkt, AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size); - if (settings && settings_size > 0) - avio_printf(pb, " %.*s", settings_size, settings); + if (settings_size > INT_MAX) + return AVERROR(EINVAL); + + settings_size_int = settings_size; + if (settings && settings_size_int > 0) + avio_printf(pb, " %.*s", settings_size_int, settings); avio_printf(pb, "\n");