Re: [FFmpeg-devel] [PATCH] ffprobe: fix memleaks on errors

2015-01-21 Thread Stefano Sabatini
On date Wednesday 2015-01-21 05:47:13 +0100, Michael Niedermayer encoded:
 Found-by: Andreas Cadhalpun andreas.cadhal...@googlemail.com
 Signed-off-by: Michael Niedermayer michae...@gmx.at
 ---
  ffprobe.c |   19 ---
  1 file changed, 12 insertions(+), 7 deletions(-)
 
 diff --git a/ffprobe.c b/ffprobe.c
 index faddc16..38879f1 100644
 --- a/ffprobe.c
 +++ b/ffprobe.c
 @@ -2398,6 +2398,7 @@ static int open_input_file(AVFormatContext 
 **fmt_ctx_ptr, const char *filename)
  print_error(filename, err);
  return err;
  }
 +*fmt_ctx_ptr = fmt_ctx;
  if (scan_all_pmts_set)
  av_dict_set(format_opts, scan_all_pmts, NULL, AV_DICT_MATCH_CASE);
  if ((t = av_dict_get(format_opts, , NULL, AV_DICT_IGNORE_SUFFIX))) {
 @@ -2409,14 +2410,17 @@ static int open_input_file(AVFormatContext 
 **fmt_ctx_ptr, const char *filename)
  opts = setup_find_stream_info_opts(fmt_ctx, codec_opts);
  orig_nb_streams = fmt_ctx-nb_streams;
  
 -if ((err = avformat_find_stream_info(fmt_ctx, opts))  0) {
 -print_error(filename, err);
 -return err;
 -}
 +err = avformat_find_stream_info(fmt_ctx, opts);
 +
  for (i = 0; i  orig_nb_streams; i++)
  av_dict_free(opts[i]);
  av_freep(opts);
  
 +if (err  0) {
 +print_error(filename, err);
 +return err;
 +}
 +
  av_dump_format(fmt_ctx, 0, filename, 0);
  
  /* bind a decoder to each input stream */
 @@ -2466,7 +2470,7 @@ static void close_input_file(AVFormatContext **ctx_ptr)
  
  static int probe_file(WriterContext *wctx, const char *filename)
  {
 -AVFormatContext *fmt_ctx;
 +AVFormatContext *fmt_ctx = NULL;
  int ret, i;
  int section_id;
  
 @@ -2475,7 +2479,7 @@ static int probe_file(WriterContext *wctx, const char 
 *filename)
  
  ret = open_input_file(fmt_ctx, filename);
  if (ret  0)
 -return ret;
 +goto end;
  
  #define CHECK_END if (ret  0) goto end
  
 @@ -2533,7 +2537,8 @@ static int probe_file(WriterContext *wctx, const char 
 *filename)
  }
  
  end:
 -close_input_file(fmt_ctx);
 +if (fmt_ctx)
 +close_input_file(fmt_ctx);
  av_freep(nb_streams_frames);
  av_freep(nb_streams_packets);
  av_freep(selected_streams);
 -- 
 1.7.9.5

LGTM, thanks.
-- 
FFmpeg = Fast  Fierce Mere Political Efficient Gospel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] ffprobe: fix memleaks on errors

2015-01-21 Thread Michael Niedermayer
On Wed, Jan 21, 2015 at 10:41:11AM +0100, Stefano Sabatini wrote:
 On date Wednesday 2015-01-21 05:47:13 +0100, Michael Niedermayer encoded:
  Found-by: Andreas Cadhalpun andreas.cadhal...@googlemail.com
  Signed-off-by: Michael Niedermayer michae...@gmx.at
  ---
   ffprobe.c |   19 ---
   1 file changed, 12 insertions(+), 7 deletions(-)
  
  diff --git a/ffprobe.c b/ffprobe.c
  index faddc16..38879f1 100644
  --- a/ffprobe.c
  +++ b/ffprobe.c
  @@ -2398,6 +2398,7 @@ static int open_input_file(AVFormatContext 
  **fmt_ctx_ptr, const char *filename)
   print_error(filename, err);
   return err;
   }
  +*fmt_ctx_ptr = fmt_ctx;
   if (scan_all_pmts_set)
   av_dict_set(format_opts, scan_all_pmts, NULL, 
  AV_DICT_MATCH_CASE);
   if ((t = av_dict_get(format_opts, , NULL, AV_DICT_IGNORE_SUFFIX))) {
  @@ -2409,14 +2410,17 @@ static int open_input_file(AVFormatContext 
  **fmt_ctx_ptr, const char *filename)
   opts = setup_find_stream_info_opts(fmt_ctx, codec_opts);
   orig_nb_streams = fmt_ctx-nb_streams;
   
  -if ((err = avformat_find_stream_info(fmt_ctx, opts))  0) {
  -print_error(filename, err);
  -return err;
  -}
  +err = avformat_find_stream_info(fmt_ctx, opts);
  +
   for (i = 0; i  orig_nb_streams; i++)
   av_dict_free(opts[i]);
   av_freep(opts);
   
  +if (err  0) {
  +print_error(filename, err);
  +return err;
  +}
  +
   av_dump_format(fmt_ctx, 0, filename, 0);
   
   /* bind a decoder to each input stream */
  @@ -2466,7 +2470,7 @@ static void close_input_file(AVFormatContext 
  **ctx_ptr)
   
   static int probe_file(WriterContext *wctx, const char *filename)
   {
  -AVFormatContext *fmt_ctx;
  +AVFormatContext *fmt_ctx = NULL;
   int ret, i;
   int section_id;
   
  @@ -2475,7 +2479,7 @@ static int probe_file(WriterContext *wctx, const char 
  *filename)
   
   ret = open_input_file(fmt_ctx, filename);
   if (ret  0)
  -return ret;
  +goto end;
   
   #define CHECK_END if (ret  0) goto end
   
  @@ -2533,7 +2537,8 @@ static int probe_file(WriterContext *wctx, const char 
  *filename)
   }
   
   end:
  -close_input_file(fmt_ctx);
  +if (fmt_ctx)
  +close_input_file(fmt_ctx);
   av_freep(nb_streams_frames);
   av_freep(nb_streams_packets);
   av_freep(selected_streams);
  -- 
  1.7.9.5
 
 LGTM, thanks.

applied

thanks

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

Asymptotically faster algorithms should always be preferred if you have
asymptotical amounts of data


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] ffprobe: fix memleaks on errors

2015-01-20 Thread Michael Niedermayer
Found-by: Andreas Cadhalpun andreas.cadhal...@googlemail.com
Signed-off-by: Michael Niedermayer michae...@gmx.at
---
 ffprobe.c |   19 ---
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/ffprobe.c b/ffprobe.c
index faddc16..38879f1 100644
--- a/ffprobe.c
+++ b/ffprobe.c
@@ -2398,6 +2398,7 @@ static int open_input_file(AVFormatContext **fmt_ctx_ptr, 
const char *filename)
 print_error(filename, err);
 return err;
 }
+*fmt_ctx_ptr = fmt_ctx;
 if (scan_all_pmts_set)
 av_dict_set(format_opts, scan_all_pmts, NULL, AV_DICT_MATCH_CASE);
 if ((t = av_dict_get(format_opts, , NULL, AV_DICT_IGNORE_SUFFIX))) {
@@ -2409,14 +2410,17 @@ static int open_input_file(AVFormatContext 
**fmt_ctx_ptr, const char *filename)
 opts = setup_find_stream_info_opts(fmt_ctx, codec_opts);
 orig_nb_streams = fmt_ctx-nb_streams;
 
-if ((err = avformat_find_stream_info(fmt_ctx, opts))  0) {
-print_error(filename, err);
-return err;
-}
+err = avformat_find_stream_info(fmt_ctx, opts);
+
 for (i = 0; i  orig_nb_streams; i++)
 av_dict_free(opts[i]);
 av_freep(opts);
 
+if (err  0) {
+print_error(filename, err);
+return err;
+}
+
 av_dump_format(fmt_ctx, 0, filename, 0);
 
 /* bind a decoder to each input stream */
@@ -2466,7 +2470,7 @@ static void close_input_file(AVFormatContext **ctx_ptr)
 
 static int probe_file(WriterContext *wctx, const char *filename)
 {
-AVFormatContext *fmt_ctx;
+AVFormatContext *fmt_ctx = NULL;
 int ret, i;
 int section_id;
 
@@ -2475,7 +2479,7 @@ static int probe_file(WriterContext *wctx, const char 
*filename)
 
 ret = open_input_file(fmt_ctx, filename);
 if (ret  0)
-return ret;
+goto end;
 
 #define CHECK_END if (ret  0) goto end
 
@@ -2533,7 +2537,8 @@ static int probe_file(WriterContext *wctx, const char 
*filename)
 }
 
 end:
-close_input_file(fmt_ctx);
+if (fmt_ctx)
+close_input_file(fmt_ctx);
 av_freep(nb_streams_frames);
 av_freep(nb_streams_packets);
 av_freep(selected_streams);
-- 
1.7.9.5

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel