summaryrefslogtreecommitdiffstats
path: root/media/mtp/MtpStringBuffer.cpp
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@google.com>2014-11-13 16:43:35 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-11-13 16:43:35 +0000
commite418cfae0970d1abe60b8cc681aa8c8a828b3769 (patch)
tree4578b428d6a2bad432207238c48444541684e23e /media/mtp/MtpStringBuffer.cpp
parentcf957fb7c4a5ca845bfb4639f8b551aeec0075ca (diff)
parent869e0798bbb51af570b4d6ef750f2c21e6b94c8a (diff)
downloadframeworks_av-e418cfae0970d1abe60b8cc681aa8c8a828b3769.zip
frameworks_av-e418cfae0970d1abe60b8cc681aa8c8a828b3769.tar.gz
frameworks_av-e418cfae0970d1abe60b8cc681aa8c8a828b3769.tar.bz2
am 869e0798: Merge "MTP: add strict bounds checking for all incoming packets" into lmp-mr1-dev
* commit '869e0798bbb51af570b4d6ef750f2c21e6b94c8a': MTP: add strict bounds checking for all incoming packets
Diffstat (limited to 'media/mtp/MtpStringBuffer.cpp')
-rw-r--r--media/mtp/MtpStringBuffer.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/media/mtp/MtpStringBuffer.cpp b/media/mtp/MtpStringBuffer.cpp
index f3420a4..df04694 100644
--- a/media/mtp/MtpStringBuffer.cpp
+++ b/media/mtp/MtpStringBuffer.cpp
@@ -123,11 +123,17 @@ void MtpStringBuffer::set(const uint16_t* src) {
mByteCount = dest - mBuffer;
}
-void MtpStringBuffer::readFromPacket(MtpDataPacket* packet) {
- int count = packet->getUInt8();
+bool MtpStringBuffer::readFromPacket(MtpDataPacket* packet) {
+ uint8_t count;
+ if (!packet->getUInt8(count))
+ return false;
+
uint8_t* dest = mBuffer;
for (int i = 0; i < count; i++) {
- uint16_t ch = packet->getUInt16();
+ uint16_t ch;
+
+ if (!packet->getUInt16(ch))
+ return false;
if (ch >= 0x0800) {
*dest++ = (uint8_t)(0xE0 | (ch >> 12));
*dest++ = (uint8_t)(0x80 | ((ch >> 6) & 0x3F));
@@ -142,6 +148,7 @@ void MtpStringBuffer::readFromPacket(MtpDataPacket* packet) {
*dest++ = 0;
mCharCount = count;
mByteCount = dest - mBuffer;
+ return true;
}
void MtpStringBuffer::writeToPacket(MtpDataPacket* packet) const {