浏览代码

ALSA: ctxfi - Fix possible buffer pointer overrun

Fix possible buffer pointer overruns.  Back to zero when it's equal
or over the buffer size.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 16 年之前
父节点
当前提交
af8500bbbd
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      sound/pci/ctxfi/ctpcm.c

+ 4 - 0
sound/pci/ctxfi/ctpcm.c

@@ -243,6 +243,8 @@ ct_pcm_playback_pointer(struct snd_pcm_substream *substream)
 	/* Read out playback position */
 	/* Read out playback position */
 	position = atc->pcm_playback_position(atc, apcm);
 	position = atc->pcm_playback_position(atc, apcm);
 	position = bytes_to_frames(runtime, position);
 	position = bytes_to_frames(runtime, position);
+	if (position >= runtime->buffer_size)
+		position = 0;
 	return position;
 	return position;
 }
 }
 
 
@@ -343,6 +345,8 @@ ct_pcm_capture_pointer(struct snd_pcm_substream *substream)
 	/* Read out playback position */
 	/* Read out playback position */
 	position = atc->pcm_capture_position(atc, apcm);
 	position = atc->pcm_capture_position(atc, apcm);
 	position = bytes_to_frames(runtime, position);
 	position = bytes_to_frames(runtime, position);
+	if (position >= runtime->buffer_size)
+		position = 0;
 	return position;
 	return position;
 }
 }