From a8626ae8de9b66235e0093ca6c5db4e0be0d4064 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 13 Dec 2016 16:12:10 -0800 Subject: [PATCH] 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 --- media/jni/android_mtp_MtpDatabase.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp index 34a7f7ced89f..6cad7231fac7 100644 --- a/media/jni/android_mtp_MtpDatabase.cpp +++ b/media/jni/android_mtp_MtpDatabase.cpp @@ -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; -- 2.11.0