1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00

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>
This commit is contained in:
Andreas Rheinhardt 2020-09-07 18:14:47 +02:00
parent ed948c1149
commit 0f9ade1ff3

View File

@ -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;
}