[FFmpeg-trac] #9622(avformat:new): Skip samples overflow and negative in fragmented MP4

FFmpeg trac at avcodec.org
Tue Feb 1 01:28:02 EET 2022


#9622: Skip samples overflow and negative in fragmented MP4
-------------------------------------+-------------------------------------
             Reporter:  Matt         |                     Type:  defect
  Wolenetz                           |
               Status:  new          |                 Priority:  normal
            Component:  avformat     |                  Version:  git-
             Keywords:  mov,         |  master
  skip_samples, timestamp, seek      |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:
 Negative int64_t result of mov_get_skip_samples() can result if the
 timestamps for samples in moofs decrease (e.g. first moof->traf->tfdt
 having base decode media time of Z, second moof-...time of Y, third ... of
 X, where Z>>Y>>X).
 Scenario: Seek to time X. Observe that the next packet read has time X but
 skip_samples (front discard) value in side data that is negative.

 Two questions:
 1) Should such a stream instead produce parse error of some kind before
 emitting a packet with a negative skip_samples?
 How to reproduce: chromium fuzzer produced a case, but similar can be
 crafted manually. Reference https://crbug.com/1189939.

 2) Return type of mov_get_skip_samples is larger than where it is used in
 caller, resulting in overflow/truncation. Is this only possible for
 malformed streams, which don't currently yield error but maybe should (see
 (1))? Or should the overflow/truncation be fixed or itself trigger some
 error?

 Downstream Chromium will likely just clip negative front_skip_samples to
 be non-negative, but such case may imply other issues in ffmpeg. Hence
 this bug.
 {{{
 % ffplay -loglevel trace -ss <time X> <reproFile>

 ...messages like:
 [mov,mp4,m4a,3gp,3g2,mj2 @ ...] demuxer injecting skip -925335552 /
 discard 0
 ...
 [opus @ ...] skip -925335552 / discard 0 samples due to side data

 ffplay version N-105440-gf23d3a5f8f Copyright (c) 2003-2022 the FFmpeg
 developers

 }}} this bug tracker.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/9622>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list