summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-09-07 18:14:47 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-09-21 04:50:58 +0200
commit0f9ade1ff395cfaf51f9a7ecc1ed725339aa1426 (patch)
tree65b3f07b01136f22c77698c25b40308cadf8264d /libavformat
parented948c114971c7a5f710741a48a7ca2ef455b35f (diff)
avformat/dashdec: Fix memleak on allocation error, avoid allocation
get_content_url() allocates two buffers for temporary strings and when one of them couldn't be allocated, it simply returns, although one of the two allocations could have succeeded and would leak in this scenario. This can be fixed by avoiding one of the temporary buffers. Reviewed-by: Steven Liu <lq@chinaffmpeg.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/dashdec.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
index 23393d41f8..548a71d6dc 100644
--- a/libavformat/dashdec.c
+++ b/libavformat/dashdec.c
@@ -472,11 +472,9 @@ static char *get_content_url(xmlNodePtr *baseurl_nodes,
char *text;
char *url = NULL;
char *tmp_str = av_mallocz(max_url_size);
- char *tmp_str_2 = av_mallocz(max_url_size);
- if (!tmp_str || !tmp_str_2) {
+ if (!tmp_str)
return NULL;
- }
for (i = 0; i < n_baseurl_nodes; ++i) {
if (baseurl_nodes[i] &&
@@ -485,9 +483,7 @@ static char *get_content_url(xmlNodePtr *baseurl_nodes,
text = xmlNodeGetContent(baseurl_nodes[i]->children);
if (text) {
memset(tmp_str, 0, max_url_size);
- memset(tmp_str_2, 0, max_url_size);
- ff_make_absolute_url(tmp_str_2, max_url_size, tmp_str, text);
- av_strlcpy(tmp_str, tmp_str_2, max_url_size);
+ ff_make_absolute_url(tmp_str, max_url_size, "", text);
xmlFree(text);
}
}
@@ -513,7 +509,6 @@ static char *get_content_url(xmlNodePtr *baseurl_nodes,
}
end:
av_free(tmp_str);
- av_free(tmp_str_2);
return url;
}