Merge "Make sure the .wav extractor does not read data outside the bounds of the 'data' box." into gingerbread
This commit is contained in:
committed by
Android (Google) Code Review
commit
a7516e90d0
@@ -331,9 +331,20 @@ status_t WAVSource::read(
|
|||||||
return err;
|
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(
|
ssize_t n = mDataSource->readAt(
|
||||||
mCurrentPos, buffer->data(),
|
mCurrentPos, buffer->data(),
|
||||||
mBitsPerSample == 8 ? kMaxFrameSize / 2 : kMaxFrameSize);
|
maxBytesToRead);
|
||||||
|
|
||||||
if (n <= 0) {
|
if (n <= 0) {
|
||||||
buffer->release();
|
buffer->release();
|
||||||
|
|||||||
Reference in New Issue
Block a user