Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8626ae8 authored by George Burgess IV's avatar George Burgess IV
Browse files

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
parent fbeacb02
Loading
Loading
Loading
Loading
+18 −12
Original line number Diff line number Diff line
@@ -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;