[FFmpeg-devel] [PATCH 2/3] avcodec/bsf: fix resource leak in av_bsf_list_parse_str
Steven Liu
lq at chinaffmpeg.org
Tue Jan 10 13:44:58 EET 2017
cid: 1396268
when av_strdup(str) error, the lst need release
Signed-off-by: Steven Liu <lq at 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
More information about the ffmpeg-devel
mailing list