Browse Source

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 years ago
parent
commit
af8500bbbd
1 changed files with 4 additions and 0 deletions
  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;
 }
 }