Fix potential NULL dereference errors.
Found by the static analyzer; there were 10, but all of them looked
like:
frameworks/base/media/jni/android_mtp_MtpDatabase.cpp:751:39: warning:
Array access (from variable 'longValues') results in a null pointer
dereference
packet.putUInt128(longValues[i]);
Bug: None.
Test: Warnings no longer appear.
Change-Id: I0f41e93922c51563d77b9f58f3f6538688ff2065
This commit is contained in:
@@ -719,6 +719,24 @@ MtpResponseCode MyMtpDatabase::getObjectPropertyList(MtpObjectHandle handle,
|
||||
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]);
|
||||
@@ -750,18 +768,6 @@ MtpResponseCode MyMtpDatabase::getObjectPropertyList(MtpObjectHandle handle,
|
||||
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 MyMtpDatabase::getObjectPropertyList");
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user