Loading media/jni/android_media_MediaDrm.cpp +14 −4 Original line number Original line Diff line number Diff line Loading @@ -438,7 +438,7 @@ static String8 JStringToString8(JNIEnv *env, jstring const &jstr) { Entry e = s.next(); Entry e = s.next(); */ */ static KeyedVector<String8, String8> HashMapToKeyedVector(JNIEnv *env, jobject &hashMap) { static KeyedVector<String8, String8> HashMapToKeyedVector(JNIEnv *env, jobject &hashMap, bool *pIsOK) { jclass clazz = gFields.stringClassId; jclass clazz = gFields.stringClassId; KeyedVector<String8, String8> keyedVector; KeyedVector<String8, String8> keyedVector; Loading @@ -451,16 +451,22 @@ static KeyedVector<String8, String8> HashMapToKeyedVector(JNIEnv *env, jobject & jobject entry = env->CallObjectMethod(iterator, gFields.iterator.next); jobject entry = env->CallObjectMethod(iterator, gFields.iterator.next); if (entry) { if (entry) { jobject obj = env->CallObjectMethod(entry, gFields.entry.getKey); jobject obj = env->CallObjectMethod(entry, gFields.entry.getKey); if (!env->IsInstanceOf(obj, clazz)) { if (obj == NULL || !env->IsInstanceOf(obj, clazz)) { jniThrowException(env, "java/lang/IllegalArgumentException", jniThrowException(env, "java/lang/IllegalArgumentException", "HashMap key is not a String"); "HashMap key is not a String"); env->DeleteLocalRef(entry); *pIsOK = false; break; } } jstring jkey = static_cast<jstring>(obj); jstring jkey = static_cast<jstring>(obj); obj = env->CallObjectMethod(entry, gFields.entry.getValue); obj = env->CallObjectMethod(entry, gFields.entry.getValue); if (!env->IsInstanceOf(obj, clazz)) { if (obj == NULL || !env->IsInstanceOf(obj, clazz)) { jniThrowException(env, "java/lang/IllegalArgumentException", jniThrowException(env, "java/lang/IllegalArgumentException", "HashMap value is not a String"); "HashMap value is not a String"); env->DeleteLocalRef(entry); *pIsOK = false; break; } } jstring jvalue = static_cast<jstring>(obj); jstring jvalue = static_cast<jstring>(obj); Loading Loading @@ -763,7 +769,11 @@ static jobject android_media_MediaDrm_getKeyRequest( KeyedVector<String8, String8> optParams; KeyedVector<String8, String8> optParams; if (joptParams != NULL) { if (joptParams != NULL) { optParams = HashMapToKeyedVector(env, joptParams); bool isOK = true; optParams = HashMapToKeyedVector(env, joptParams, &isOK); if (!isOK) { return NULL; } } } Vector<uint8_t> request; Vector<uint8_t> request; Loading Loading
media/jni/android_media_MediaDrm.cpp +14 −4 Original line number Original line Diff line number Diff line Loading @@ -438,7 +438,7 @@ static String8 JStringToString8(JNIEnv *env, jstring const &jstr) { Entry e = s.next(); Entry e = s.next(); */ */ static KeyedVector<String8, String8> HashMapToKeyedVector(JNIEnv *env, jobject &hashMap) { static KeyedVector<String8, String8> HashMapToKeyedVector(JNIEnv *env, jobject &hashMap, bool *pIsOK) { jclass clazz = gFields.stringClassId; jclass clazz = gFields.stringClassId; KeyedVector<String8, String8> keyedVector; KeyedVector<String8, String8> keyedVector; Loading @@ -451,16 +451,22 @@ static KeyedVector<String8, String8> HashMapToKeyedVector(JNIEnv *env, jobject & jobject entry = env->CallObjectMethod(iterator, gFields.iterator.next); jobject entry = env->CallObjectMethod(iterator, gFields.iterator.next); if (entry) { if (entry) { jobject obj = env->CallObjectMethod(entry, gFields.entry.getKey); jobject obj = env->CallObjectMethod(entry, gFields.entry.getKey); if (!env->IsInstanceOf(obj, clazz)) { if (obj == NULL || !env->IsInstanceOf(obj, clazz)) { jniThrowException(env, "java/lang/IllegalArgumentException", jniThrowException(env, "java/lang/IllegalArgumentException", "HashMap key is not a String"); "HashMap key is not a String"); env->DeleteLocalRef(entry); *pIsOK = false; break; } } jstring jkey = static_cast<jstring>(obj); jstring jkey = static_cast<jstring>(obj); obj = env->CallObjectMethod(entry, gFields.entry.getValue); obj = env->CallObjectMethod(entry, gFields.entry.getValue); if (!env->IsInstanceOf(obj, clazz)) { if (obj == NULL || !env->IsInstanceOf(obj, clazz)) { jniThrowException(env, "java/lang/IllegalArgumentException", jniThrowException(env, "java/lang/IllegalArgumentException", "HashMap value is not a String"); "HashMap value is not a String"); env->DeleteLocalRef(entry); *pIsOK = false; break; } } jstring jvalue = static_cast<jstring>(obj); jstring jvalue = static_cast<jstring>(obj); Loading Loading @@ -763,7 +769,11 @@ static jobject android_media_MediaDrm_getKeyRequest( KeyedVector<String8, String8> optParams; KeyedVector<String8, String8> optParams; if (joptParams != NULL) { if (joptParams != NULL) { optParams = HashMapToKeyedVector(env, joptParams); bool isOK = true; optParams = HashMapToKeyedVector(env, joptParams, &isOK); if (!isOK) { return NULL; } } } Vector<uint8_t> request; Vector<uint8_t> request; Loading