Merge "Fix potential NULL dereference errors." am: bce5b2f971 am: 76451438d9
am: 621afac235
Change-Id: Id7a8506c6ee2667f6a303905359a99e80dbced9d
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp
index 56b85b5..06a7182 100644
--- a/media/jni/android_mtp_MtpDatabase.cpp
+++ b/media/jni/android_mtp_MtpDatabase.cpp
@@ -708,6 +708,24 @@
int type = dataTypes[i];
packet.putUInt16(type);
+ if (type == MTP_TYPE_STR) {
+ jstring value = (jstring)env->GetObjectArrayElement(stringValuesArray, i);
+ const char *valueStr = (value ? env->GetStringUTFChars(value, NULL) : NULL);
+ if (valueStr) {
+ packet.putString(valueStr);
+ env->ReleaseStringUTFChars(value, valueStr);
+ } else {
+ packet.putEmptyString();
+ }
+ env->DeleteLocalRef(value);
+ continue;
+ }
+
+ if (!longValues) {
+ ALOGE("bad longValuesArray value in MyMtpDatabase::getObjectPropertyList");
+ continue;
+ }
+
switch (type) {
case MTP_TYPE_INT8:
packet.putInt8(longValues[i]);
@@ -739,18 +757,6 @@
case MTP_TYPE_UINT128:
packet.putUInt128(longValues[i]);
break;
- case MTP_TYPE_STR: {
- jstring value = (jstring)env->GetObjectArrayElement(stringValuesArray, i);
- const char *valueStr = (value ? env->GetStringUTFChars(value, NULL) : NULL);
- if (valueStr) {
- packet.putString(valueStr);
- env->ReleaseStringUTFChars(value, valueStr);
- } else {
- packet.putEmptyString();
- }
- env->DeleteLocalRef(value);
- break;
- }
default:
ALOGE("bad or unsupported data type in MtpDatabase::getObjectPropertyList");
break;