Skip to content

Commit

Permalink
audio: st_rate_flow exist a infinite loop
Browse files Browse the repository at this point in the history
If a voice recording equipment is opened for a long time(several days)
in windows guest, rate->ipos will overflow and rate->opos will never
have a chance to change. It will result to a infinite loop.

Signed-off-by: Peng Hao <peng.hao2@zte.com.cn>
Signed-off-by: Wang Yechao <wang.yechao255@zte.com.cn>
Message-id: 1500128061-20849-1-git-send-email-peng.hao2@zte.com.cn
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
  • Loading branch information
Peng Hao authored and kraxel committed Jul 17, 2017
1 parent 6e2c463 commit facd0e9
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions audio/rate_template.h
Expand Up @@ -71,6 +71,12 @@ void NAME (void *opaque, struct st_sample *ibuf, struct st_sample *obuf,
while (rate->ipos <= (rate->opos >> 32)) {
ilast = *ibuf++;
rate->ipos++;

/* if ipos overflow, there is a infinite loop */
if (rate->ipos == 0xffffffff) {
rate->ipos = 1;
rate->opos = rate->opos & 0xffffffff;
}
/* See if we finished the input buffer yet */
if (ibuf >= iend) {
goto the_end;
Expand Down

0 comments on commit facd0e9

Please sign in to comment.