diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2016-02-08 15:23:51 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-02-08 15:57:24 +0100 |
commit | a25c5dbb5ee0f54c474d9caf43359cd0f61ae1bf (patch) | |
tree | 0f9ebbf90287541844732093121f48a03f98e561 /ffmpeg_opt.c | |
parent | 35d9441f7b96d6e48353466313dfa127513c2f41 (diff) | |
download | ffmpeg-streaming-a25c5dbb5ee0f54c474d9caf43359cd0f61ae1bf.zip ffmpeg-streaming-a25c5dbb5ee0f54c474d9caf43359cd0f61ae1bf.tar.gz |
ffmpeg_opt: Fix memleaks in "manually set programs" loop
Fixes CID1351356, CID1351357
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'ffmpeg_opt.c')
-rw-r--r-- | ffmpeg_opt.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c index 669976b..bc8355e 100644 --- a/ffmpeg_opt.c +++ b/ffmpeg_opt.c @@ -2366,18 +2366,25 @@ loop_end: while(*p) { const char *p2 = av_get_token(&p, ":"); + const char *to_dealloc = p2; char *key; if (!p2) break; + if(*p) p++; key = av_get_token(&p2, "="); - if (!key || !*p2) + if (!key || !*p2) { + av_freep(&to_dealloc); + av_freep(&key); break; + } p2++; if (!strcmp(key, "program_num")) progid = strtol(p2, NULL, 0); + av_freep(&to_dealloc); + av_freep(&key); } program = av_new_program(oc, progid); @@ -2385,6 +2392,7 @@ loop_end: p = o->program[i].u.str; while(*p) { const char *p2 = av_get_token(&p, ":"); + const char *to_dealloc = p2; char *key; if (!p2) break; @@ -2411,6 +2419,8 @@ loop_end: av_log(NULL, AV_LOG_FATAL, "Unknown program key %s.\n", key); exit_program(1); } + av_freep(&to_dealloc); + av_freep(&key); } } |