ASoC: msm: qdsp6v2: Add size check in audio cal ioctl
For the audio get calibration ioctl compare the allocated buffer size to the size of the header and cal type header to ensure the buffer is big enough. Change-Id: I851b4454e8420706ad3263d67e892720d46e5718 Signed-off-by: Ben Romberger <bromberg@codeaurora.org>
This commit is contained in:
parent
cc915a3931
commit
d0424df41e
1 changed files with 8 additions and 2 deletions
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2014, 2016 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
|
@ -490,7 +490,13 @@ static long audio_cal_shared_ioctl(struct file *file, unsigned int cmd,
|
|||
goto unlock;
|
||||
if (data == NULL)
|
||||
goto unlock;
|
||||
if (copy_to_user((void *)arg, data,
|
||||
if ((sizeof(data->hdr) + data->hdr.cal_type_size) > size) {
|
||||
pr_err("%s: header size %zd plus cal type size %d are greater than data buffer size %d\n",
|
||||
__func__, sizeof(data->hdr),
|
||||
data->hdr.cal_type_size, size);
|
||||
ret = -EFAULT;
|
||||
goto unlock;
|
||||
} else if (copy_to_user((void *)arg, data,
|
||||
sizeof(data->hdr) + data->hdr.cal_type_size)) {
|
||||
pr_err("%s: Could not copy cal type to user\n",
|
||||
__func__);
|
||||
|
|
Loading…
Add table
Reference in a new issue