Report a runtime error rather than asserting if the amr software decoder reads more data than it was given(!)
Change-Id: I0a7ad65051a6663a583ea82da5fc75227dcdbbfa
diff --git a/media/libstagefright/codecs/amrnb/dec/AMRNBDecoder.cpp b/media/libstagefright/codecs/amrnb/dec/AMRNBDecoder.cpp
index fbb6598..553be87 100644
--- a/media/libstagefright/codecs/amrnb/dec/AMRNBDecoder.cpp
+++ b/media/libstagefright/codecs/amrnb/dec/AMRNBDecoder.cpp
@@ -21,6 +21,7 @@
#include <media/stagefright/MediaBufferGroup.h>
#include <media/stagefright/MediaDebug.h>
#include <media/stagefright/MediaDefs.h>
+#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MetaData.h>
namespace android {
@@ -161,7 +162,14 @@
buffer->set_range(0, kNumSamplesPerFrame * sizeof(int16_t));
- CHECK(numBytesRead <= mInputBuffer->range_length());
+ if (numBytesRead > mInputBuffer->range_length()) {
+ // This is bad, should never have happened, but did. Abort now.
+
+ buffer->release();
+ buffer = NULL;
+
+ return ERROR_MALFORMED;
+ }
mInputBuffer->set_range(
mInputBuffer->range_offset() + numBytesRead,