Merge "Make sure the .wav extractor does not read data outside the bounds of the 'data' box." into gingerbread

This commit is contained in:
Andreas Huber
2010-09-16 15:20:33 -07:00
committed by Android (Google) Code Review

View File

@@ -331,9 +331,20 @@ status_t WAVSource::read(
return err;
}
size_t maxBytesToRead =
mBitsPerSample == 8 ? kMaxFrameSize / 2 : kMaxFrameSize;
size_t maxBytesAvailable =
(mCurrentPos - mOffset >= (off_t)mSize)
? 0 : mSize - (mCurrentPos - mOffset);
if (maxBytesToRead > maxBytesAvailable) {
maxBytesToRead = maxBytesAvailable;
}
ssize_t n = mDataSource->readAt(
mCurrentPos, buffer->data(),
mBitsPerSample == 8 ? kMaxFrameSize / 2 : kMaxFrameSize);
maxBytesToRead);
if (n <= 0) {
buffer->release();