[Ffmpeg-devel] [PATCH] av_realloc, unneccesary memcpy and possibly leaks after r5992
Michael Niedermayer
michaelni
Sun Aug 13 22:32:31 CEST 2006
Hi
On Sun, Aug 13, 2006 at 03:59:54PM +0200, Herv? W. wrote:
> Hi,
>
> in libavutil/mem.c after r5992:
> >#ifndef MEMALIGN_HACK
> > ptr= realloc(ptr, size);
>
> "If realloc() fails the original block is left untouched - it is not
> freed or moved"
> according to: http://man.he.net/man3/realloc
> (and possibly others)
> fixed in: " inputdata disappeared even after failed realloc.diff "
the line above is correct and the corresponding change is rejected
>
> > if(((int)ptr&15) || !ptr)
>
> if ((int)ptr&15) is "true", then ptr is unaligned and the data should
> be moved, not returned. And aligned memory was memcpy'd .
> fixed in: " aligned memory was moved anyway.diff "
> (and in: "inputdata disappeared even after failed realloc.diff " )
yes, a very silly typo, i will fix it soon
>
> > return ptr;
> >#endif
> >
> > ptr2= av_malloc(size);
> > if(ptr && ptr2)
> > memcpy(ptr2, ptr, size);
> > av_free(ptr);
>
> if ptr2 was NULL, av_free is still called, which in my opinion breaks
> unnecessarily with "If realloc() fails the original block is left
> untouched - it is not freed or moved"
> fixed in: " inputdata disappeared even after failed realloc (part2).diff "
my code is buggy, sadly yours too, it will leak if size=0
ill try to fix it, dont hesitate to review my change on svnlog and point
me to any further cases i missed, seems this isnt as easy as it looked
...
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
In the past you could go to a library and read, borrow or copy any book
Today you'd get arrested for mere telling someone where the library is
More information about the ffmpeg-devel
mailing list