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
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp
index 34a7f7c..6cad723 100644
--- a/media/jni/android_mtp_MtpDatabase.cpp
+++ b/media/jni/android_mtp_MtpDatabase.cpp
@@ -719,6 +719,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]);
@@ -750,18 +768,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 MyMtpDatabase::getObjectPropertyList");
break;