[alsa-devel] [PATCH 2/2] ALSA: Compress - add codec parameter checks

Vinod Koul vinod.koul at linux.intel.com
Mon Sep 17 08:21:26 CEST 2012


Signed-off-by: Vinod Koul <vinod.koul at linux.intel.com>
---
 include/sound/compress_params.h |    1 +
 sound/core/compress_offload.c   |   10 ++++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/include/sound/compress_params.h b/include/sound/compress_params.h
index da4a456..602dc6c 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 bd7f28e..c40ae57 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;
 }
 
-- 
1.7.0.4



More information about the Alsa-devel mailing list