summaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorChristian Engelmayer <cengelma@gmx.at>2015-02-07 23:40:52 +0100
committerMark Brown <broonie@kernel.org>2015-02-08 11:08:27 +0800
commit279e17ae81c17b40ae7a6c9e10f386a7aac7aa55 (patch)
tree1c4726682f64ce4c3226e7b177ab5c1dde8b78a7 /sound/soc
parent5c2b06369dafd796ebb4f17dab543d3da500245e (diff)
downloadlinux-279e17ae81c17b40ae7a6c9e10f386a7aac7aa55.tar.gz
linux-279e17ae81c17b40ae7a6c9e10f386a7aac7aa55.tar.bz2
linux-279e17ae81c17b40ae7a6c9e10f386a7aac7aa55.zip
ASoC: Intel: sst: Fix firmware name size handling
Function sst_acpi_probe() uses plain strcpy for setting member firmware_name of a struct intel_sst_drv from member firmware of a struct sst_machines. Thereby the destination array has got a length of 20 byte while the source may hold 32 byte. Since eg. commit 64b9c90b8600 ("ASoC: Intel: Fix BYTCR firmware name") increased strings from "fw_sst_0f28.bin" to "intel/fw_sst_0f28.bin" there is an actual possibility that the 20 byte array at the end of struct intel_sst_drv is overrun. Thus increase the size of the destination and use the same define for both structs. Detected by Coverity CID 1260087. Signed-off-by: Christian Engelmayer <cengelma@gmx.at> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/intel/sst/sst.h3
-rw-r--r--sound/soc/intel/sst/sst_acpi.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/sound/soc/intel/sst/sst.h b/sound/soc/intel/sst/sst.h
index 7f4bbfcbc6f5..562bc483d6b7 100644
--- a/sound/soc/intel/sst/sst.h
+++ b/sound/soc/intel/sst/sst.h
@@ -58,6 +58,7 @@ enum sst_algo_ops {
#define SST_BLOCK_TIMEOUT 1000
#define FW_SIGNATURE_SIZE 4
+#define FW_NAME_SIZE 32
/* stream states */
enum sst_stream_states {
@@ -426,7 +427,7 @@ struct intel_sst_drv {
* Holder for firmware name. Due to async call it needs to be
* persistent till worker thread gets called
*/
- char firmware_name[20];
+ char firmware_name[FW_NAME_SIZE];
};
/* misc definitions */
diff --git a/sound/soc/intel/sst/sst_acpi.c b/sound/soc/intel/sst/sst_acpi.c
index b3360139c41a..51f83bad5319 100644
--- a/sound/soc/intel/sst/sst_acpi.c
+++ b/sound/soc/intel/sst/sst_acpi.c
@@ -47,7 +47,7 @@ struct sst_machines {
char board[32];
char machine[32];
void (*machine_quirk)(void);
- char firmware[32];
+ char firmware[FW_NAME_SIZE];
struct sst_platform_info *pdata;
};