[FFmpeg-soc] [soc]: r5736 - mms/mmst.c
zhentan feng
spyfeng at gmail.com
Thu Apr 8 18:43:33 CEST 2010
Hi
On Fri, Apr 9, 2010 at 12:15 AM, Ronald S. Bultje <rsbultje at gmail.com>wrote:
> Hi,
>
> On Thu, Apr 8, 2010 at 12:10 PM, zhentan feng <spyfeng at gmail.com> wrote:
> > On Thu, Apr 8, 2010 at 9:48 PM, Ronald S. Bultje <rsbultje at gmail.com>
> wrote:
> >> On Thu, Apr 8, 2010 at 9:10 AM, zhentan feng <spyfeng at gmail.com> wrote:
> >> > On Thu, Apr 8, 2010 at 4:43 AM, Aurelien Jacobs <aurel at gnuage.org>
> >> wrote:
> >> >> On Wed, Apr 07, 2010 at 06:34:05PM +0200, spyfeng wrote:
> >> >> > Author: spyfeng
> >> >> > Date: Wed Apr 7 18:34:05 2010
> >> >> > New Revision: 5736
> >> >> >
> >> >> > Log:
> >> >> > check av_realloc() failure.
> >> >> >
> >> >> > Modified:
> >> >> > mms/mmst.c
> >> >> >
> >> >> > Modified: mms/mmst.c
> >> >> >
> >> >>
> >>
> ==============================================================================
> >> >> > --- mms/mmst.c Wed Apr 7 18:27:52 2010 (r5735)
> >> >> > +++ mms/mmst.c Wed Apr 7 18:34:05 2010 (r5736)
> >> >> > @@ -321,6 +321,8 @@ static MMSSCPacketType get_tcp_server_re
> >> >> > mms->asf_header =
> >> >> av_realloc(mms->asf_header,
> >> >> > mms->asf_header_size
> >> >> > + mms->pkt_buf_len);
> >> >> > + if (!mms->asf_header)
> >> >> > + return -1;
> >> >>
> >> >> memory leak...
> >> >
> >> > i fixed it, thanks.
> >>
> >> Nope, see man realloc:
> >>
> >> For realloc(), the input pointer is still valid if reallocation
> failed.
> >>
> >> In other words, you should free() mms->asf_header() if realloc
> >> returned NULL but mms->asf_header (the argument) was non-NULL.
> >>
> > yes, you are right. I check the FFmpeg files and found some other places
> > seems make the same mistakes.
> > is it necessary to modify them?
>
> Uhm, probably. A patch for that would b great, but if you could just
> point out the places where that happens, it'd help a lot already.
>
> for example:
1) libavfilter/avfiltergraph.c line 39
graph->filters = av_realloc(graph->filters,
sizeof(AVFilterContext*) *
++graph->filter_count);
if (!graph->filters)
return -1;
2) libavformat/avien.c line 554
idx->cluster = av_realloc(idx->cluster, (cl+1)*sizeof(void*));
if (!idx->cluster)
return -1;
I am not sure these codes are the same situation like mine.
It just looks similarly.
zhentan
--
Best wishes~
More information about the FFmpeg-soc
mailing list