From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 9B5CB4B6EE for ; Mon, 21 Jul 2025 17:25:13 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 712C268C693; Mon, 21 Jul 2025 20:25:09 +0300 (EEST) Received: from out162-62-58-216.mail.qq.com (out162-62-58-216.mail.qq.com [162.62.58.216]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id C258E68B5B9 for ; Mon, 21 Jul 2025 20:25:01 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1753118692; bh=ZKi5o6t/VD1FYsmTUjbiWvxXbDRQz9CN8t51ykCo4Cc=; h=Subject:From:In-Reply-To:Date:Cc:References:To; b=Cb8H5jnXdo55IBe1Y3zn329FgNjjQnfOdRuCFgtULnfJXQfT9DGQSa8PpzXDpbTTF k2qpub+51XQl83XA4D5daAVcR8uJA9V+AS64eiJD6qfjzQ+rY37wc8OSdiKUcWq1+U PzkQdtaKGg/tmu031hC4CLUGm5p/M7Uv8J+8h/w4= Received: from smtpclient.apple ([240e:3b7:3270:9130:807f:c8b6:e775:115d]) by newxmesmtplogicsvrsza29-0.qq.com (NewEsmtp) with SMTP id 63302881; Tue, 22 Jul 2025 01:24:51 +0800 X-QQ-mid: xmsmtpt1753118691ts8mape8l Message-ID: X-QQ-XMAILINFO: OKJfc8Sc6ZByhq2Ji5doYIebvY8tPVd6qzOiQAhNEZ8MLABSgQDZqXR+257Pa7 W3JMWhxQSfACbVbvIyS66m2/L3gMq9hSzTaZjlfCm72gfIgbKO+1Z8rbzOY7syXoSqJv9qlrXFnm zzyNBu5f9OvrsEcvmmVEX4B9ZGrKUqZ5xzWRLyPh/ZIm9uF7+eFatK5yD94pF47yXscOc+MYjqXx ESaHyK2Jsdgx8Fz1q85Pj9TiQXd6XuEp1P7GMz41XvitWDC0srJA4HDBxVABRuB4LzWcp9dDjNri RYNFaUhVEdFkQOLIxeqsKh0lQc4ojgRSsmJFzDAnR0rMLriQVNK5MimryaxMQYNQAoe69nNg/UY7 jllQp/DXVZBIL6xVrKCI4kZ+IM8WmIWGPtdt4LRCOblMpDGnJp4o750mI0/4imk9b+zSQtlLgnBQ R4aoIMQnL/Tzg/X4nXdESmESZahQFBAbSe6bMsctuvL6KgAq1PairsuAd4njrztR4XMIPUMyX/Wv GIEDAWevYK+JHS3fbJDDUZyd/n8jK32xQfHLrNU+ykSQ6G8ftar5oEREdBxzvkbOlFmYY+yjvQXl TK/3BFvD6O7w6mAXAd5OyHiid2QOaL1zFiG861jBRAGv7pvKPn+F0fVopGdYBXSL2n5i3XCTGfC9 mP55y3NhWkghq4va3f04b3V0sm8rxCXZfXFz2+HUGhgRkwpF/1CZZMX4bXniV0GnQA8AG0LkL5Q7 UmipmyD6ZFQzVlDxTDjXPnxNcQmyyURXu9QgmYBj7ukOYxudkkQ8H1xBTest+nFHXZpLG/thWYcV YVEFdLqX7AFmkcRaIma2ivdyzBEGMDkA/A0hEL5X/duqfkUMcwt5+8uN09Y6k2YlEL0MELZSIFTG +StJ77HG3UWmEKAHuukSgU0FwksSASEyhLO0YF5wbv/Fw6j8ahKYWi4hlJ38kETolDyKmMkcgZex lVNvekcauBxVZiQv34okYCCA5UgSCyE0ISxA9WLBepQ7SqSPyJm3JU3hm3GCtFAglu//t6tOYhyE +YPdVecQ== X-QQ-XMRINFO: NS+P29fieYNw95Bth2bWPxk= Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3818.100.11.1.3\)) From: Zhao Zhili In-Reply-To: Date: Tue, 22 Jul 2025 01:24:45 +0800 X-OQ-MSGID: References: To: ffmpeg-devel@ffmpeg.org X-Mailer: Apple Mail (2.3818.100.11.1.3) Subject: Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: Ensure keyframe offset in valid range X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: =?utf-8?Q?Tomas_H=C3=A4rdin?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Ping. > On Jul 16, 2025, at 11:57, Zhao Zhili wrote: > > From: Zhao Zhili > > Fix assert failure. > Fix #11666. > --- > libavformat/mxfenc.c | 43 ++++++++++++++++++++++++++++++++++++------- > 1 file changed, 36 insertions(+), 7 deletions(-) > > diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c > index d12ccfd739..fbfa49693b 100644 > --- a/libavformat/mxfenc.c > +++ b/libavformat/mxfenc.c > @@ -1983,7 +1983,17 @@ static unsigned klv_fill_size(uint64_t size) > return pad & (KAG_SIZE-1); > } > > -static void mxf_write_index_table_segment(AVFormatContext *s) > +static inline int mxf_check_keyframe_offset(AVFormatContext *s, int offset) > +{ > + if (offset >= INT8_MIN && offset <= INT8_MAX) > + return 0; > + > + av_log(s, AV_LOG_ERROR, "keyframe offset %d out of range [%d,%d], please reduce " > + "encoder GOP size\n", offset, INT8_MIN, INT8_MAX); > + return AVERROR_INVALIDDATA; > +} > + > +static int mxf_write_index_table_segment(AVFormatContext *s) > { > MXFContext *mxf = s->priv_data; > AVIOContext *pb = s->pb; > @@ -1992,11 +2002,12 @@ static void mxf_write_index_table_segment(AVFormatContext *s) > int prev_non_b_picture = 0; > int audio_frame_size = 0; > int64_t pos; > + int err; > > av_log(s, AV_LOG_DEBUG, "edit units count %d\n", mxf->edit_units_count); > > if (!mxf->edit_units_count && !mxf->edit_unit_byte_count) > - return; > + return 0; > > avio_write(pb, index_table_segment_key, 16); > > @@ -2100,9 +2111,17 @@ static void mxf_write_index_table_segment(AVFormatContext *s) > avio_w8(pb, temporal_offset); > > if ((mxf->index_entries[i].flags & 0x30) == 0x30) { // back and forward prediction > + int offset = mxf->last_key_index - i; > + err = mxf_check_keyframe_offset(s, offset); > + if (err < 0) > + return err; > sc->b_picture_count = FFMAX(sc->b_picture_count, i - prev_non_b_picture); > - avio_w8(pb, mxf->last_key_index - i); > + avio_w8(pb, offset); > } else { > + int offset = key_index - i; > + err = mxf_check_keyframe_offset(s, offset); > + if (err < 0) > + return err; > avio_w8(pb, key_index - i); // key frame offset > if ((mxf->index_entries[i].flags & 0x20) == 0x20) // only forward > mxf->last_key_index = key_index; > @@ -2127,6 +2146,8 @@ static void mxf_write_index_table_segment(AVFormatContext *s) > } > > mxf_update_klv_size(pb, pos); > + > + return 0; > } > > static void mxf_write_klv_fill(AVFormatContext *s) > @@ -3354,7 +3375,9 @@ static int mxf_write_packet(AVFormatContext *s, AVPacket *pkt) > if ((err = mxf_write_partition(s, 1, 2, header_open_partition_key, 1)) < 0) > return err; > mxf_write_klv_fill(s); > - mxf_write_index_table_segment(s); > + err = mxf_write_index_table_segment(s); > + if (err < 0) > + return err; > } else { > if ((err = mxf_write_partition(s, 0, 0, header_open_partition_key, 1)) < 0) > return err; > @@ -3370,7 +3393,9 @@ static int mxf_write_packet(AVFormatContext *s, AVPacket *pkt) > if ((err = mxf_write_partition(s, 1, 2, body_partition_key, 0)) < 0) > return err; > mxf_write_klv_fill(s); > - mxf_write_index_table_segment(s); > + err = mxf_write_index_table_segment(s); > + if (err < 0) > + return err; > } > > mxf_write_klv_fill(s); > @@ -3455,7 +3480,9 @@ static int mxf_write_footer(AVFormatContext *s) > if ((err = mxf_write_partition(s, 0, 2, footer_partition_key, 0)) < 0) > return err; > mxf_write_klv_fill(s); > - mxf_write_index_table_segment(s); > + err = mxf_write_index_table_segment(s); > + if (err < 0) > + return err; > } > > mxf_write_klv_fill(s); > @@ -3474,7 +3501,9 @@ static int mxf_write_footer(AVFormatContext *s) > if ((err = mxf_write_partition(s, 1, 2, header_closed_partition_key, 1)) < 0) > return err; > mxf_write_klv_fill(s); > - mxf_write_index_table_segment(s); > + err = mxf_write_index_table_segment(s); > + if (err < 0) > + return err; > } else { > if ((err = mxf_write_partition(s, 0, 0, header_closed_partition_key, 1)) < 0) > return err; > -- > 2.46.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".