From 2b836f2ee01036717c17e4f2fde9fbcad8155c0b Mon Sep 17 00:00:00 2001 From: Vinod Koul Date: Mon, 17 Sep 2012 11:51:26 +0530 Subject: [PATCH] ALSA: Compress - add codec parameter checks Conflicts: include/sound/compress_params.h Change-Id: Iae0b0b447438e77c5f58d355a445bbe37a0bace1 Signed-off-by: Vinod Koul Signed-off-by: Takashi Iwai Signed-off-by: Krishnankutty Kolathappilly --- include/sound/compress_params.h | 1 + sound/core/compress_offload.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/include/sound/compress_params.h b/include/sound/compress_params.h index f5ab1792aec..5651ec35f58 100644 --- a/include/sound/compress_params.h +++ b/include/sound/compress_params.h @@ -91,6 +91,7 @@ #define SND_AUDIOCODEC_DTS_LBR_PASS_THROUGH ((__u32) 0x00000017) #define SND_AUDIOCODEC_EAC3 ((__u32) 0x00000018) #define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_EAC3 + /* * Profile and modes are listed with bit masks. This allows for a * more compact representation of fields that will not evolve 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; }