[vlc-devel] [PATCH 1/2] httplive: fix Read func. (when caller skips data)
Jean-Paul Saman
jpsaman at videolan.org
Sat Dec 31 10:32:38 CET 2011
This patch is wrong p_read should have been checked earlier.
On Fri, Dec 30, 2011 at 11:18 AM, <fyhuel at viotech.net> wrote:
> From: Frédéric Yhuel <fyhuel at viotech.net>
>
> ---
> modules/stream_filter/httplive.c | 12 ++----------
> 1 files changed, 2 insertions(+), 10 deletions(-)
>
> diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c
> index 4d60d8a..58dc1db 100644
> --- a/modules/stream_filter/httplive.c
> +++ b/modules/stream_filter/httplive.c
> @@ -1912,7 +1912,8 @@ static ssize_t hls_Read(stream_t *s, uint8_t *p_read, unsigned int i_read)
>
> if (len > 0)
> {
> - memcpy(p_read + copied, segment->data->p_buffer, len);
> + if( p_read ) /* otherwise caller skips data */
> + memcpy(p_read + copied, segment->data->p_buffer, len);
Below you update the segment data buffer while p_read is NULL, which
is the wrong thing to do.
> segment->data->i_buffer -= len;
> segment->data->p_buffer += len;
> copied += len;
> @@ -1935,15 +1936,6 @@ static int Read(stream_t *s, void *buffer, unsigned int i_read)
> if (p_sys->b_error)
> return 0;
>
> - if (buffer == NULL)
> - {
> - /* caller skips data, get big enough buffer */
> - msg_Warn(s, "buffer is NULL (allocate %d)", i_read);
> - buffer = calloc(1, i_read);
> - if (buffer == NULL)
> - return 0; /* NO MEMORY left*/
> - }
> -
> length = hls_Read(s, (uint8_t*) buffer, i_read);
> if (length < 0)
> return 0;
> --
> 1.7.5.4
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel
Kind regards,
Jean-Paul Saman
More information about the vlc-devel
mailing list