diff options
author | Alessandro Ghedini <alessandro@ghedini.me> | 2014-03-12 19:28:22 +0400 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2014-03-12 23:13:36 +0400 |
commit | 6998a9f4c4e069f515c50614179f4cfc7d0184f5 (patch) | |
tree | c5d766a7d20025426481d89d1e714b3cd6d31bd2 /libavformat/http.c | |
parent | d15c536123a44362ace6299c391a492c90b83fc7 (diff) |
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: Luca Barbato <lu_zero@gentoo.org>
Diffstat (limited to 'libavformat/http.c')
-rw-r--r-- | libavformat/http.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libavformat/http.c b/libavformat/http.c index fde7a079dd..948930a053 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -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) { int len = 4 + strlen(p) + strlen(tag); + int is_first = !s->icy_metadata_headers; int ret; if (s->icy_metadata_headers) @@ -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) return ret; + if (is_first) + *s->icy_metadata_headers = '\0'; + av_strlcatf(s->icy_metadata_headers, len, "%s: %s\n", tag, p); return 0; |