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:
parent
ed948c1149
commit
0f9ade1ff3
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user