[FFmpeg-devel] [PATCH v8 2/6] avformat/flvdec: support demux hevc in enhanced flv

Steven Liu lingjiujianke at gmail.com
Thu Jul 27 05:43:12 EEST 2023


Michael Niedermayer <michael at niedermayer.cc> 于2023年7月27日周四 07:27写道:
Hi Michael,
>
> On Thu, Apr 13, 2023 at 05:44:37PM +0800, Steven Liu wrote:
> > Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
> > ---
> >  libavformat/flvdec.c | 58 ++++++++++++++++++++++++++++++++++++++------
> >  1 file changed, 50 insertions(+), 8 deletions(-)
> >
> > diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
> > index d83edff727..6a1e6e7ff0 100644
> > --- a/libavformat/flvdec.c
> > +++ b/libavformat/flvdec.c
> > @@ -79,6 +79,8 @@ typedef struct FLVContext {
> >      int64_t last_ts;
> >      int64_t time_offset;
> >      int64_t time_pos;
> > +
> > +    uint8_t exheader;
> >  } FLVContext;
> >
> >  /* AMF date type */
> > @@ -302,13 +304,25 @@ static void flv_set_audio_codec(AVFormatContext *s, AVStream *astream,
> >      }
> >  }
> >
> > -static int flv_same_video_codec(AVCodecParameters *vpar, int flags)
> > +static int flv_same_video_codec(AVFormatContext *s, AVCodecParameters *vpar, int flags)
> >  {
> >      int flv_codecid = flags & FLV_VIDEO_CODECID_MASK;
> > +    FLVContext *flv = s->priv_data;
> >
> >      if (!vpar->codec_id && !vpar->codec_tag)
> >          return 1;
> >
> > +    if (flv->exheader) {
> > +        uint8_t *codec_id_str = (uint8_t *)s->pb->buf_ptr;
> > +        uint32_t codec_id = codec_id_str[3] | codec_id_str[2] << 8 | codec_id_str[1] << 16 | codec_id_str[0] << 24;
>
> pb->buf_ptr is in general not supposed to be directly accessed
>
> In this case here it segfaults
>
> READ of size 1 at 0x6100000003b7 thread T0
>     #0 0x7f928d in flv_same_video_codec ffmpeg/libavformat/flvdec.c:317:29
>     #1 0x7f928d in flv_read_packet ffmpeg/libavformat/flvdec.c:1177
>     #2 0x6ff32f in ff_read_packet ffmpeg/libavformat/demux.c:575:15
>     #3 0x70a2fd in read_frame_internal ffmpeg/libavformat/demux.c:1263:15
>     #4 0x71d158 in avformat_find_stream_info ffmpeg/libavformat/demux.c:2634:15
>     #5 0x4c821b in LLVMFuzzerTestOneInput ffmpeg/tools/target_dem_fuzzer.c:206:11
>
> can you remove pb->buf_ptr use ?
> I can fix it too but i have no testcase and fate doesnt cover this so my fix would
> be untested ...
https://patchwork.ffmpeg.org/project/ffmpeg/patch/20230727023744.20984-1-lq@chinaffmpeg.org/
Can this patch fix it?
>
> thx
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Democracy is the form of government in which you can choose your dictator
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".

Thanks
Steven


More information about the ffmpeg-devel mailing list