summaryrefslogtreecommitdiffstats
path: root/media/libmedia/IMediaHTTPConnection.cpp
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2015-04-20 11:08:59 -0700
committerMarco Nelissen <marcone@google.com>2015-04-22 10:14:35 -0700
commit59cea2616269f34b1f3d046995efd8da42cd5549 (patch)
treec2f165a35105142d715f36876ededb0311360938 /media/libmedia/IMediaHTTPConnection.cpp
parenteb204f82afd5519eb544bf8bee692e7152820c3b (diff)
downloadframeworks_av-59cea2616269f34b1f3d046995efd8da42cd5549.zip
frameworks_av-59cea2616269f34b1f3d046995efd8da42cd5549.tar.gz
frameworks_av-59cea2616269f34b1f3d046995efd8da42cd5549.tar.bz2
Add some sanity checks
Bug: 19400722 Change-Id: Ib3afdf73fd4647eeea5721c61c8b72dbba0647f6
Diffstat (limited to 'media/libmedia/IMediaHTTPConnection.cpp')
-rw-r--r--media/libmedia/IMediaHTTPConnection.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/media/libmedia/IMediaHTTPConnection.cpp b/media/libmedia/IMediaHTTPConnection.cpp
index 7e26ee6..a5a3714 100644
--- a/media/libmedia/IMediaHTTPConnection.cpp
+++ b/media/libmedia/IMediaHTTPConnection.cpp
@@ -24,6 +24,7 @@
#include <binder/Parcel.h>
#include <utils/String8.h>
#include <media/stagefright/foundation/ADebug.h>
+#include <media/stagefright/MediaErrors.h>
namespace android {
@@ -106,11 +107,18 @@ struct BpMediaHTTPConnection : public BpInterface<IMediaHTTPConnection> {
return UNKNOWN_ERROR;
}
- int32_t len = reply.readInt32();
+ size_t len = reply.readInt32();
- if (len > 0) {
- memcpy(buffer, mMemory->pointer(), len);
+ if (len > size) {
+ ALOGE("requested %zu, got %zu", size, len);
+ return ERROR_OUT_OF_RANGE;
}
+ if (len > mMemory->size()) {
+ ALOGE("got %zu, but memory has %zu", len, mMemory->size());
+ return ERROR_OUT_OF_RANGE;
+ }
+
+ memcpy(buffer, mMemory->pointer(), len);
return len;
}