summaryrefslogtreecommitdiff
path: root/media/jni/android_media_Utils.cpp
diff options
context:
space:
mode:
authorYujie Qin <yujieqin@google.com>2016-06-16 11:39:34 +0200
committerYujie Qin <yujieqin@google.com>2016-06-16 11:42:41 +0200
commitcad166686787a494b6689b8adb013e016adfcd90 (patch)
treeb38c3e241224d3b91747981383a949c86cee049a /media/jni/android_media_Utils.cpp
parentc1720dce1b01893bf925267381ff4975095a718a (diff)
Report error correctly for the implementation of
StreamInterface::GetData() Bug: 28889197 Change-Id: Id07755e1b3637f85b6176a59935ad3a5597cfb05
Diffstat (limited to 'media/jni/android_media_Utils.cpp')
-rw-r--r--media/jni/android_media_Utils.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/media/jni/android_media_Utils.cpp b/media/jni/android_media_Utils.cpp
index 359ebad5adbe..c62d93036c2e 100644
--- a/media/jni/android_media_Utils.cpp
+++ b/media/jni/android_media_Utils.cpp
@@ -68,16 +68,19 @@ piex::Error BufferedStream::GetData(
if (sizeToRead <= kMinSizeToRead) {
sizeToRead = kMinSizeToRead;
}
+
void* tempBuffer = malloc(sizeToRead);
- if (tempBuffer != NULL) {
- size_t bytesRead = mStream->read(tempBuffer, sizeToRead);
- if (bytesRead != sizeToRead) {
- free(tempBuffer);
- return piex::Error::kFail;
- }
- mStreamBuffer.write(tempBuffer, bytesRead);
+ if (tempBuffer == NULL) {
+ return piex::Error::kFail;
+ }
+
+ size_t bytesRead = mStream->read(tempBuffer, sizeToRead);
+ if (bytesRead != sizeToRead) {
free(tempBuffer);
+ return piex::Error::kFail;
}
+ mStreamBuffer.write(tempBuffer, bytesRead);
+ free(tempBuffer);
}
// Read bytes.
@@ -126,8 +129,8 @@ piex::Error FileStream::GetData(
size_t size = fread((void*)data, sizeof(std::uint8_t), length, mFile);
mPosition += size;
- // Handle errors.
- if (ferror(mFile)) {
+ // Handle errors and verify the size.
+ if (ferror(mFile) || size != length) {
ALOGV("GetData read failed: (offset: %zu, length: %zu)", offset, length);
return piex::Error::kFail;
}