Loading include/media/stagefright/MetaData.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -260,7 +260,7 @@ private: return mSize <= sizeof(u.reservoir); return mSize <= sizeof(u.reservoir); } } void allocateStorage(size_t size); void *allocateStorage(size_t size); void freeStorage(); void freeStorage(); void *storage() { void *storage() { Loading media/libstagefright/MetaData.cpp +20 −12 Original line number Original line Diff line number Diff line Loading @@ -244,8 +244,11 @@ MetaData::typed_data::~typed_data() { MetaData::typed_data::typed_data(const typed_data &from) MetaData::typed_data::typed_data(const typed_data &from) : mType(from.mType), : mType(from.mType), mSize(0) { mSize(0) { allocateStorage(from.mSize); memcpy(storage(), from.storage(), mSize); void *dst = allocateStorage(from.mSize); if (dst) { memcpy(dst, from.storage(), mSize); } } } MetaData::typed_data &MetaData::typed_data::operator=( MetaData::typed_data &MetaData::typed_data::operator=( Loading @@ -253,8 +256,10 @@ MetaData::typed_data &MetaData::typed_data::operator=( if (this != &from) { if (this != &from) { clear(); clear(); mType = from.mType; mType = from.mType; allocateStorage(from.mSize); void *dst = allocateStorage(from.mSize); memcpy(storage(), from.storage(), mSize); if (dst) { memcpy(dst, from.storage(), mSize); } } } return *this; return *this; Loading @@ -271,14 +276,12 @@ void MetaData::typed_data::setData( clear(); clear(); mType = type; mType = type; allocateStorage(size); void *dst = storage(); void *dst = allocateStorage(size); if (!dst) { if (dst) { ALOGE("Couldn't allocate %zu bytes for item", size); return; } memcpy(dst, data, size); memcpy(dst, data, size); } } } void MetaData::typed_data::getData( void MetaData::typed_data::getData( uint32_t *type, const void **data, size_t *size) const { uint32_t *type, const void **data, size_t *size) const { Loading @@ -287,14 +290,19 @@ void MetaData::typed_data::getData( *data = storage(); *data = storage(); } } void MetaData::typed_data::allocateStorage(size_t size) { void *MetaData::typed_data::allocateStorage(size_t size) { mSize = size; mSize = size; if (usesReservoir()) { if (usesReservoir()) { return; return &u.reservoir; } } u.ext_data = malloc(mSize); u.ext_data = malloc(mSize); if (u.ext_data == NULL) { ALOGE("Couldn't allocate %zu bytes for item", size); mSize = 0; } return u.ext_data; } } void MetaData::typed_data::freeStorage() { void MetaData::typed_data::freeStorage() { Loading media/libstagefright/id3/ID3.cpp +6 −0 Original line number Original line Diff line number Diff line Loading @@ -804,6 +804,12 @@ ID3::getAlbumArt(size_t *length, String8 *mime) const { size_t descLen = StringSize(&data[2 + mimeLen], encoding); size_t descLen = StringSize(&data[2 + mimeLen], encoding); if (size < 2 || size - 2 < mimeLen || size - 2 - mimeLen < descLen) { ALOGW("bogus album art sizes"); return NULL; } *length = size - 2 - mimeLen - descLen; *length = size - 2 - mimeLen - descLen; return &data[2 + mimeLen + descLen]; return &data[2 + mimeLen + descLen]; Loading Loading
include/media/stagefright/MetaData.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -260,7 +260,7 @@ private: return mSize <= sizeof(u.reservoir); return mSize <= sizeof(u.reservoir); } } void allocateStorage(size_t size); void *allocateStorage(size_t size); void freeStorage(); void freeStorage(); void *storage() { void *storage() { Loading
media/libstagefright/MetaData.cpp +20 −12 Original line number Original line Diff line number Diff line Loading @@ -244,8 +244,11 @@ MetaData::typed_data::~typed_data() { MetaData::typed_data::typed_data(const typed_data &from) MetaData::typed_data::typed_data(const typed_data &from) : mType(from.mType), : mType(from.mType), mSize(0) { mSize(0) { allocateStorage(from.mSize); memcpy(storage(), from.storage(), mSize); void *dst = allocateStorage(from.mSize); if (dst) { memcpy(dst, from.storage(), mSize); } } } MetaData::typed_data &MetaData::typed_data::operator=( MetaData::typed_data &MetaData::typed_data::operator=( Loading @@ -253,8 +256,10 @@ MetaData::typed_data &MetaData::typed_data::operator=( if (this != &from) { if (this != &from) { clear(); clear(); mType = from.mType; mType = from.mType; allocateStorage(from.mSize); void *dst = allocateStorage(from.mSize); memcpy(storage(), from.storage(), mSize); if (dst) { memcpy(dst, from.storage(), mSize); } } } return *this; return *this; Loading @@ -271,14 +276,12 @@ void MetaData::typed_data::setData( clear(); clear(); mType = type; mType = type; allocateStorage(size); void *dst = storage(); void *dst = allocateStorage(size); if (!dst) { if (dst) { ALOGE("Couldn't allocate %zu bytes for item", size); return; } memcpy(dst, data, size); memcpy(dst, data, size); } } } void MetaData::typed_data::getData( void MetaData::typed_data::getData( uint32_t *type, const void **data, size_t *size) const { uint32_t *type, const void **data, size_t *size) const { Loading @@ -287,14 +290,19 @@ void MetaData::typed_data::getData( *data = storage(); *data = storage(); } } void MetaData::typed_data::allocateStorage(size_t size) { void *MetaData::typed_data::allocateStorage(size_t size) { mSize = size; mSize = size; if (usesReservoir()) { if (usesReservoir()) { return; return &u.reservoir; } } u.ext_data = malloc(mSize); u.ext_data = malloc(mSize); if (u.ext_data == NULL) { ALOGE("Couldn't allocate %zu bytes for item", size); mSize = 0; } return u.ext_data; } } void MetaData::typed_data::freeStorage() { void MetaData::typed_data::freeStorage() { Loading
media/libstagefright/id3/ID3.cpp +6 −0 Original line number Original line Diff line number Diff line Loading @@ -804,6 +804,12 @@ ID3::getAlbumArt(size_t *length, String8 *mime) const { size_t descLen = StringSize(&data[2 + mimeLen], encoding); size_t descLen = StringSize(&data[2 + mimeLen], encoding); if (size < 2 || size - 2 < mimeLen || size - 2 - mimeLen < descLen) { ALOGW("bogus album art sizes"); return NULL; } *length = size - 2 - mimeLen - descLen; *length = size - 2 - mimeLen - descLen; return &data[2 + mimeLen + descLen]; return &data[2 + mimeLen + descLen]; Loading