[FFmpeg-devel] [PATCH 2/3] mlvdec: validate bits_per_coded_sample
Michael Niedermayer
michael at niedermayer.cc
Mon Dec 21 02:18:46 CET 2015
On Sun, Dec 20, 2015 at 12:15:17PM +0100, Andreas Cadhalpun wrote:
> On 20.12.2015 00:55, Michael Niedermayer wrote:
> > On Sat, Dec 19, 2015 at 11:49:02PM +0100, Andreas Cadhalpun wrote:
> >> A negative bits_per_coded_sample doesn't make sense.
> >> If it is too large, the size calculation for av_get_packet overflows,
> >> resulting in allocation of a too small buffer.
> >>
> >> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
> >> ---
> >> libavformat/mlvdec.c | 9 +++++++++
> >> 1 file changed, 9 insertions(+)
> >>
> >> diff --git a/libavformat/mlvdec.c b/libavformat/mlvdec.c
> >> index 4b3bdc1..2e57aae 100644
> >> --- a/libavformat/mlvdec.c
> >> +++ b/libavformat/mlvdec.c
> >> @@ -135,6 +135,15 @@ static int scan_file(AVFormatContext *avctx, AVStream *vst, AVStream *ast, int f
> >> avpriv_request_sample(avctx, "raw api version");
> >> avio_skip(pb, 20); // pointer, width, height, pitch, frame_size
> >> vst->codec->bits_per_coded_sample = avio_rl32(pb);
> >> + if (vst->codec->bits_per_coded_sample < 0 ||
> >> + (vst->codec->width && vst->codec->height &&
> >
> >> + vst->codec->bits_per_coded_sample > (INT_MAX - 7) / (vst->codec->width * vst->codec->height))) {
> >
> > w*h can overflow
>
> OK, but that should be checked via av_image_check_size.
> Updated patch attached.
>
> > might be easier to calculate it in unsigned 64bit and then check
>
> av_image_check_size does it correctly.
>
> > the value also could be reused to ensure it wont get out of sync with
> > the allocation
>
> If width or height could get out of sync, so could the precomputed value.
> So I don't think reusing the value is very useful here.
>
> Best regards,
> Andreas
> mlvdec.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
> 9870daae0ba6a9c826563645319ee38c694025e8 0002-mlvdec-validate-bits_per_coded_sample.patch
> From 66a3af0c54f0db6b96b0bad7ae7b9bbbd980b830 Mon Sep 17 00:00:00 2001
> From: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
> Date: Sat, 19 Dec 2015 23:45:00 +0100
> Subject: [PATCH 2/3] mlvdec: validate bits_per_coded_sample
>
> A negative bits_per_coded_sample doesn't make sense.
> If it is too large, the size calculation for av_get_packet overflows,
> resulting in allocation of a too small buffer.
>
> Also make sure width and height are sane.
no more objections from me
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
It is dangerous to be right in matters on which the established authorities
are wrong. -- Voltaire
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20151221/2af0ffad/attachment.sig>
More information about the ffmpeg-devel
mailing list