[FFmpeg-devel] [PATCH 2/8] png: Don't fail when a packet is larger than INT_MAX

Michael Niedermayer michaelni at gmx.at
Mon Mar 30 19:17:26 CEST 2015


On Mon, Mar 30, 2015 at 06:02:35PM +0200, wm4 wrote:
> On Mon, 30 Mar 2015 17:47:03 +0200
> Michael Niedermayer <michaelni at gmx.at> wrote:
> 
> > On Mon, Mar 30, 2015 at 05:11:05PM +0200, wm4 wrote:
> > > On Mon, 30 Mar 2015 13:49:08 +0000
> > > Donny Yang <work at kota.moe> wrote:
> > > 
> > > > On 30 March 2015 at 02:48, Michael Niedermayer <michaelni at gmx.at> wrote:
> > > > 
> > > > > On Sun, Mar 29, 2015 at 11:05:41AM +0000, Donny Yang wrote:
> > > > > > Signed-off-by: Donny Yang <work at kota.moe>
> > > > > > ---
> > > > > >  libavcodec/pngenc.c | 2 --
> > > > > >  1 file changed, 2 deletions(-)
> > > > > >
> > > > > > diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c
> > > > > > index 3697dbb..bd3aae5 100644
> > > > > > --- a/libavcodec/pngenc.c
> > > > > > +++ b/libavcodec/pngenc.c
> > > > > > @@ -373,8 +373,6 @@ static int encode_frame(AVCodecContext *avctx,
> > > > > AVPacket *pkt,
> > > > > >              enc_row_size +
> > > > > >              12 * (((int64_t)enc_row_size + IOBUF_SIZE - 1) /
> > > > > IOBUF_SIZE) // 12 * ceil(enc_row_size / IOBUF_SIZE)
> > > > > >          );
> > > > > > -    if (max_packet_size > INT_MAX)
> > > > > > -        return AVERROR(ENOMEM);
> > > > >
> > > > > the check is neccessary to prevent potential integer overflows
> > > > >
> > > > 
> > > > Doesn't ffmpeg support memory allocations of greater than 4 GiB?
> > > > I thought it did because the memory allocation functions either accept an
> > > > int64_t or size_t...
> > > 
> > > No.
> > 
> > That is false, the maximum allocation size is set by av_max_alloc()
> > its INT_MAX by default but can be increased.
> 
> This is a library-unsafe hack that shouldn't exist. Access isn't even
> synchronized, terrible.

This thread is about a GSoC qualification task. this is getting quite
off topic ...

But if you have a patch that makes code which is per process suddenly
work per library and isnt a ultra terrible mess iam sure interrested
to see that patch. But i dont see how that can be done
av_malloc() like malloc() have no context so theres
no easy way to have per library limits


[...]


> 
> Is the dimension limit on ca. 16000x16000 images "intentional" too?
> (This actually prevents ffmpeg being used to read large images.)

will you go over all open bugs in this thread?
but like with any other bug, if you want to fix it do fix it.


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The bravest are surely those who have the clearest vision
of what is before them, glory and danger alike, and yet
notwithstanding go out to meet it. -- Thucydides
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150330/15dec234/attachment.asc>


More information about the ffmpeg-devel mailing list