avformat/mov: fix integer overflow
authorGanesh Ajjanagadde <gajjanagadde@gmail.com>
Sat, 10 Oct 2015 17:39:28 +0000 (13:39 -0400)
committerGanesh Ajjanagadde <gajjanagadde@gmail.com>
Tue, 13 Oct 2015 23:41:07 +0000 (19:41 -0400)
commitd59bfcd11229300182c672ca734568919a85f773
treed2168f50031d1c0a226044321cee9c8ebd69c24d
parent4c8ca76965b1c29758246624940cbc529e7141f0
avformat/mov: fix integer overflow

Partially fixes Ticket 4727.

-duration is not a safe expression, since duration can be INT_MIN.
One might ask how it can become INT_MIN.
Although it is true that line 2574 is no longer reached with INT_MIN due
to commit 053e80f6eaf8d87521fe58ea96886b6ee0bbe59d (which fixed another
integer overflow issue), mov_update_dts_shift is called on line 3549 as
well, right after a read of untrusted data.
One can do the fix locally there, but that function is already a huge
mess. Changing mov_update_dts_shift is likely better.

This changes duration to INT_MIN + 1 in such cases. This should not make any
practical difference since such streams are anyway fuzzer files.

Tested with FATE.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
libavformat/mov.c