diff options
author | Mike Lockwood <lockwood@google.com> | 2014-11-13 16:43:35 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-11-13 16:43:35 +0000 |
commit | e418cfae0970d1abe60b8cc681aa8c8a828b3769 (patch) | |
tree | 4578b428d6a2bad432207238c48444541684e23e /media/mtp/MtpStringBuffer.cpp | |
parent | cf957fb7c4a5ca845bfb4639f8b551aeec0075ca (diff) | |
parent | 869e0798bbb51af570b4d6ef750f2c21e6b94c8a (diff) | |
download | frameworks_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.cpp | 13 |
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 { |