| From d3873fd8172d3db8979429f1bb2964f1268264aa Mon Sep 17 00:00:00 2001 |
| From: Dan Rosenberg <drosenberg@vsecurity.com> |
| Date: Sat, 25 Sep 2010 11:07:27 -0400 |
| Subject: [PATCH] ALSA: sound/pci/rme9652: prevent reading uninitialized stack memory |
| |
| commit e68d3b316ab7b02a074edc4f770e6a746390cb7d upstream. |
| |
| The SNDRV_HDSP_IOCTL_GET_CONFIG_INFO and |
| SNDRV_HDSP_IOCTL_GET_CONFIG_INFO ioctls in hdspm.c and hdsp.c allow |
| unprivileged users to read uninitialized kernel stack memory, because |
| several fields of the hdsp{m}_config_info structs declared on the stack |
| are not altered or zeroed before being copied back to the user. This |
| patch takes care of it. |
| |
| Signed-off-by: Dan Rosenberg <dan.j.rosenberg@gmail.com> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| --- |
| sound/pci/rme9652/hdsp.c | 1 + |
| sound/pci/rme9652/hdspm.c | 1 + |
| 2 files changed, 2 insertions(+), 0 deletions(-) |
| |
| diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c |
| index b92adef..d6fa7bf 100644 |
| --- a/sound/pci/rme9652/hdsp.c |
| +++ b/sound/pci/rme9652/hdsp.c |
| @@ -4609,6 +4609,7 @@ static int snd_hdsp_hwdep_ioctl(struct snd_hwdep *hw, struct file *file, unsigne |
| if (err < 0) |
| return err; |
| |
| + memset(&info, 0, sizeof(info)); |
| spin_lock_irqsave(&hdsp->lock, flags); |
| info.pref_sync_ref = (unsigned char)hdsp_pref_sync_ref(hdsp); |
| info.wordclock_sync_check = (unsigned char)hdsp_wc_sync_check(hdsp); |
| diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c |
| index 547b713..0c98ef9 100644 |
| --- a/sound/pci/rme9652/hdspm.c |
| +++ b/sound/pci/rme9652/hdspm.c |
| @@ -4127,6 +4127,7 @@ static int snd_hdspm_hwdep_ioctl(struct snd_hwdep * hw, struct file *file, |
| |
| case SNDRV_HDSPM_IOCTL_GET_CONFIG_INFO: |
| |
| + memset(&info, 0, sizeof(info)); |
| spin_lock_irq(&hdspm->lock); |
| info.pref_sync_ref = hdspm_pref_sync_ref(hdspm); |
| info.wordclock_sync_check = hdspm_wc_sync_check(hdspm); |
| -- |
| 1.7.0.4 |
| |