[libav-devel] [PATCH] Fix av_get_channel_layout_string() for positions >31

Janne Grunau janne-libav at jannau.net
Fri Nov 25 16:18:29 CET 2011


On Fri, Nov 25, 2011 at 02:59:19PM +0000, Mans Rullgard wrote:
> A value shifted left by >31 needs to have a 64-bit type.
> As there are no defined channels in this range, the fix
> is purely theoretical at this point, although it does
> avoid some invalid shifts triggering the overflow
> checker.
> 
> Signed-off-by: Mans Rullgard <mans at mansr.com>
> ---
>  libavutil/audioconvert.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/libavutil/audioconvert.c b/libavutil/audioconvert.c
> index 52656c7..e9f9e41 100644
> --- a/libavutil/audioconvert.c
> +++ b/libavutil/audioconvert.c
> @@ -109,7 +109,7 @@ void av_get_channel_layout_string(char *buf, int buf_size,
>          int i, ch;
>          av_strlcat(buf, " (", buf_size);
>          for (i = 0, ch = 0; i < 64; i++) {
> -            if ((channel_layout & (1L << i))) {
> +            if ((channel_layout & (UINT64_C(1) << i))) {
>                  const char *name = get_channel_name(i);
>                  if (name) {
>                      if (ch > 0)

ok

Janne


More information about the libav-devel mailing list