cid: 1396268
when av_strdup(str) error, the lst need release

Signed-off-by: Steven Liu <l...@chinaffmpeg.org>
---
 libavcodec/bsf.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c
index ac2024b..c9b1df2 100644
--- a/libavcodec/bsf.c
+++ b/libavcodec/bsf.c
@@ -514,8 +514,10 @@ int av_bsf_list_parse_str(const char *str, AVBSFContext 
**bsf_lst)
     if (!lst)
         return AVERROR(ENOMEM);
 
-    if (!(dup = buf = av_strdup(str)))
-        return AVERROR(ENOMEM);
+    if (!(dup = buf = av_strdup(str))) {
+        ret = AVERROR(ENOMEM);
+        goto free_lst;
+    }
 
     while (1) {
         bsf_str = av_strtok(buf, ",", &saveptr);
@@ -524,16 +526,17 @@ int av_bsf_list_parse_str(const char *str, AVBSFContext 
**bsf_lst)
 
         ret = bsf_parse_single(bsf_str, lst);
         if (ret < 0)
-            goto end;
+            goto free_all;
 
         buf = NULL;
     }
 
     ret = av_bsf_list_finalize(&lst, bsf_lst);
-end:
+free_all:
+    av_free(dup);
+free_lst:
     if (ret < 0)
         av_bsf_list_free(&lst);
-    av_free(dup);
     return ret;
 }
 
-- 
2.10.1.382.ga23ca1b.dirty



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

Reply via email to