Commit 6998a9f4 authored by Alessandro Ghedini's avatar Alessandro Ghedini Committed by Luca Barbato

http: Properly initialize icy headers string

The icy_metadata_headers string never gets initialized, so,
during the first call to av_strlcatf() in parse_icy(),
strlen() will be called on a pointer to uninitialized memory.
At best this causes some garbage data to be left at the
start of the string.

By initializing icy_metadata_headers to the empty string, the
first call to strlen() will always return 0, so that data is
appended from the start of the string.
Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
parent d15c5361
...@@ -405,6 +405,7 @@ static int parse_content_encoding(URLContext *h, const char *p) ...@@ -405,6 +405,7 @@ static int parse_content_encoding(URLContext *h, const char *p)
static int parse_icy(HTTPContext *s, const char *tag, const char *p) static int parse_icy(HTTPContext *s, const char *tag, const char *p)
{ {
int len = 4 + strlen(p) + strlen(tag); int len = 4 + strlen(p) + strlen(tag);
int is_first = !s->icy_metadata_headers;
int ret; int ret;
if (s->icy_metadata_headers) if (s->icy_metadata_headers)
...@@ -413,6 +414,9 @@ static int parse_icy(HTTPContext *s, const char *tag, const char *p) ...@@ -413,6 +414,9 @@ static int parse_icy(HTTPContext *s, const char *tag, const char *p)
if ((ret = av_reallocp(&s->icy_metadata_headers, len)) < 0) if ((ret = av_reallocp(&s->icy_metadata_headers, len)) < 0)
return ret; return ret;
if (is_first)
*s->icy_metadata_headers = '\0';
av_strlcatf(s->icy_metadata_headers, len, "%s: %s\n", tag, p); av_strlcatf(s->icy_metadata_headers, len, "%s: %s\n", tag, p);
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment