[LP64] Fix access to MediaAlbumArt.

The mSize field is a uint32_t, not a long.

Change-Id: Id3b9e6049e8998840d33fa886b676db2a8022064
This commit is contained in:
Elliott Hughes
2014-06-05 10:38:30 -07:00
parent 759a89782d
commit 9fa803be10

View File

@@ -21,6 +21,7 @@
#include <utils/threads.h>
#include <media/mediascanner.h>
#include <media/stagefright/StagefrightMediaScanner.h>
#include <private/media/VideoFrame.h>
#include "jni.h"
#include "JNIHelp.h"
@@ -347,21 +348,21 @@ android_media_MediaScanner_extractAlbumArt(
}
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
char* data = mp->extractAlbumArt(fd);
if (!data) {
MediaAlbumArt* mediaAlbumArt =
reinterpret_cast<MediaAlbumArt*>(mp->extractAlbumArt(fd));
if (mediaAlbumArt != NULL) {
return NULL;
}
long len = *((long*)data);
jbyteArray array = env->NewByteArray(len);
jbyteArray array = env->NewByteArray(mediaAlbumArt->mSize);
if (array != NULL) {
jbyte* bytes = env->GetByteArrayElements(array, NULL);
memcpy(bytes, data + 4, len);
memcpy(bytes, &mediaAlbumArt->mData[0], mediaAlbumArt->mSize);
env->ReleaseByteArrayElements(array, bytes, 0);
}
done:
free(data);
free(mediaAlbumArt);
// if NewByteArray() returned NULL, an out-of-memory
// exception will have been raised. I just want to
// return null in that case.