Commit 94f3ec6b2222eb5c0af0c784f0656ff5b909d870

Authored by Dan Carpenter
Committed by Takashi Iwai
1 parent 5e68fb3cab

sound: oss/sb_audio: prevent divide by zero bug

Speed comes from get_user() in audio_ioctl().  We use it to set the "s"
variable before clamping it to valid values so it could lead to a divide
by zero bug.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

Showing 1 changed file with 3 additions and 1 deletions Side-by-side Diff

sound/oss/sb_audio.c
... ... @@ -575,12 +575,14 @@
575 575 if (speed > 0)
576 576 {
577 577 int tmp;
578   - int s = speed * devc->channels;
  578 + int s;
579 579  
580 580 if (speed < 5000)
581 581 speed = 5000;
582 582 if (speed > 44100)
583 583 speed = 44100;
  584 +
  585 + s = speed * devc->channels;
584 586  
585 587 devc->tconst = (256 - ((1000000 + s / 2) / s)) & 0xff;
586 588