[vlc-devel] [PATCH] opus: channel_mapping is in range 0-255

Pierre Lamot pierre at videolabs.io
Thu May 31 14:02:40 CEST 2018


I could have either add a negative check in ProcessInitialHeader or set the 
channel_mapping type as unsigned but I though it was best to limit the 
validity range from the type.

On jeudi 31 mai 2018 13:59:33 CEST you wrote:
>   This patch fixes static analysis reports assuming that channel_mapping
>   can have negative values (ie in opus ProcessInitialHeader). Opus channel
>   mapping is in range 0-255
> 
>   fixes: CID 1062575 and 1062574
> ---
>  modules/codec/opus_header.h | 2 +-
>  modules/demux/mpeg/ts_psi.c | 3 ++-
>  2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/modules/codec/opus_header.h b/modules/codec/opus_header.h
> index 4b6a4e5d3c..b7f86e80b3 100644
> --- a/modules/codec/opus_header.h
> +++ b/modules/codec/opus_header.h
> @@ -36,7 +36,7 @@ typedef struct {
>      int preskip;
>      uint32_t input_sample_rate;
>      int gain; /* in dB S7.8 should be zero whenever possible */
> -    int channel_mapping;
> +    uint8_t channel_mapping;
>      /* The rest is only used if channel_mapping != 0 */
>      int nb_streams;
>      int nb_coupled;
> diff --git a/modules/demux/mpeg/ts_psi.c b/modules/demux/mpeg/ts_psi.c
> index 17aefa2c4f..7fe2b09d95 100644
> --- a/modules/demux/mpeg/ts_psi.c
> +++ b/modules/demux/mpeg/ts_psi.c
> @@ -948,7 +948,8 @@ static void OpusSetup(demux_t *demux, uint8_t *p, size_t
> len, es_format_t *p_fmt static const unsigned char map[8] = { 0, 1, 2, 3,
> 4, 5, 6, 7 }; memcpy(h.stream_map, map, sizeof(map));
> 
> -    int csc, mapping;
> +    uint8_t mapping;
> +    int csc;
>      int channels = 0;
>      int stream_count = 0;
>      int ccc = p[1]; // channel_config_code

--
Pierre Lamot



More information about the vlc-devel mailing list