ALSA: timer: Fix leak in events via snd_timer_user_tinterrupt
authorKangjie Lu <kangjielu@gmail.com>
Tue, 3 May 2016 20:44:32 +0000 (16:44 -0400)
committerDanny Wood <danwood76@gmail.com>
Tue, 29 Jan 2019 13:13:45 +0000 (13:13 +0000)
commit e4ec8cc8039a7063e24204299b462bd1383184a5 upstream.

The stack object â\80\9cr1â\80\9d has a total size of 32 bytes. Its field
â\80\9ceventâ\80\9d and â\80\9cvalâ\80\9d both contain 4 bytes padding. These 8 bytes
padding bytes are sent to user without being initialized.

Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Willy Tarreau <w@1wt.eu>
sound/core/timer.c

index 5399f91e0ac5d1f011ac0ab214c81a3f6eadbed4..fc2fdc0ab22f0919faf53715e096aacec601b45d 100644 (file)
@@ -1269,6 +1269,7 @@ 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;