mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
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 64b9c90b86
("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
This commit is contained in:
parent
5c2b06369d
commit
279e17ae81
@ -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 */
|
||||
|
@ -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;
|
||||
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user