On 12/03/14 16:28, Alessandro Ghedini wrote:
> 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.
> ---
> libavformat/http.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/libavformat/http.c b/libavformat/http.c
> index fde7a07..948930a 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;
>
Thanks for patching it up.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel