summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2017-03-31 18:22:23 +0300
committerTakashi Iwai <tiwai@suse.de>2017-03-31 17:27:05 +0200
commita8c006aafead3c45ae5d5601e3717055bccf41bc (patch)
treec7a685313111ffdc4c3e8e365b4eb849e341447f
parente8ed68205f39a7a934901eab80a5cbf3a062b7b4 (diff)
downloadop-kernel-dev-a8c006aafead3c45ae5d5601e3717055bccf41bc.zip
op-kernel-dev-a8c006aafead3c45ae5d5601e3717055bccf41bc.tar.gz
ALSA: timer: Info leak in snd_timer_user_tinterrupt()
The "r1" struct has memory holes. We clear it with memset on one path where it is used but not the other. Let's just memset it at the start of the function so it's always safe. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/core/timer.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/core/timer.c b/sound/core/timer.c
index 8b9e794..2f836ca 100644
--- a/sound/core/timer.c
+++ b/sound/core/timer.c
@@ -1277,6 +1277,7 @@ static void snd_timer_user_tinterrupt(struct snd_timer_instance *timeri,
struct timespec tstamp;
int prev, append = 0;
+ memset(&r1, 0, sizeof(r1));
memset(&tstamp, 0, sizeof(tstamp));
spin_lock(&tu->qlock);
if ((tu->filter & ((1 << SNDRV_TIMER_EVENT_RESOLUTION) |
@@ -1292,7 +1293,6 @@ static void snd_timer_user_tinterrupt(struct snd_timer_instance *timeri,
}
if ((tu->filter & (1 << SNDRV_TIMER_EVENT_RESOLUTION)) &&
tu->last_resolution != resolution) {
- memset(&r1, 0, sizeof(r1));
r1.event = SNDRV_TIMER_EVENT_RESOLUTION;
r1.tstamp = tstamp;
r1.val = resolution;
OpenPOWER on IntegriCloud