From: Vinod Koul Date: Mon, 17 Sep 2012 06:21:26 +0000 (+0530) Subject: ALSA: Compress - add codec parameter checks X-Git-Tag: v3.7-rc1~81^2~29 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=fb4a9779f1267539292268d7363e17180eb4ee5c;p=~emulex%2Finfiniband.git ALSA: Compress - add codec parameter checks Signed-off-by: Vinod Koul Signed-off-by: Takashi Iwai --- diff --git a/include/sound/compress_params.h b/include/sound/compress_params.h index da4a456de03..602dc6c45d1 100644 --- a/include/sound/compress_params.h +++ b/include/sound/compress_params.h @@ -72,6 +72,7 @@ #define SND_AUDIOCODEC_IEC61937 ((__u32) 0x0000000B) #define SND_AUDIOCODEC_G723_1 ((__u32) 0x0000000C) #define SND_AUDIOCODEC_G729 ((__u32) 0x0000000D) +#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_G729 /* * Profile and modes are listed with bit masks. This allows for a diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c index bd7f28e8925..c40ae573346 100644 --- a/sound/core/compress_offload.c +++ b/sound/core/compress_offload.c @@ -432,6 +432,16 @@ static int snd_compress_check_input(struct snd_compr_params *params) params->buffer.fragments > SIZE_MAX / params->buffer.fragment_size) return -EINVAL; + /* now codec parameters */ + if (params->codec.id == 0 || params->codec.id > SND_AUDIOCODEC_MAX) + return -EINVAL; + + if (params->codec.ch_in == 0 || params->codec.ch_out == 0) + return -EINVAL; + + if (!(params->codec.sample_rate & SNDRV_PCM_RATE_8000_192000)) + return -EINVAL; + return 0; }