summaryrefslogtreecommitdiff
path: root/media/jni/android_media_MediaPlayer.cpp
diff options
context:
space:
mode:
authorDongwon Kang <dwkang@google.com>2018-05-23 17:38:35 -0700
committerDongwon Kang <dwkang@google.com>2018-05-23 17:38:35 -0700
commit4480127cadd2a285f726c820d0169a6aa1846477 (patch)
treef5466cdf424dcae8966e17e8c006c3891cac9c67 /media/jni/android_media_MediaPlayer.cpp
parent76cb7fe2f6eec83f8cc1f7f19ed23ae76254bdb7 (diff)
MediaPlayer: ensure that jni code returns after throwing exceptions.
Test: no crash on getPlaybackParams and pass post media CTS Bug: 80200877 Change-Id: I7538967962acc2a23062615c0d39720b34505f17
Diffstat (limited to 'media/jni/android_media_MediaPlayer.cpp')
-rw-r--r--media/jni/android_media_MediaPlayer.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index eda22d574fd7..5dd01b03274a 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -384,6 +384,9 @@ android_media_MediaPlayer_getBufferingParams(JNIEnv *env, jobject thiz)
process_media_player_call(
env, thiz, mp->getBufferingSettings(&settings),
"java/lang/IllegalStateException", "unexpected error");
+ if (env->ExceptionCheck()) {
+ return nullptr;
+ }
ALOGV("getBufferingSettings:{%s}", settings.toString().string());
return bp.asJobject(env, gBufferingParamsFields);
@@ -555,6 +558,9 @@ android_media_MediaPlayer_getPlaybackParams(JNIEnv *env, jobject thiz)
process_media_player_call(
env, thiz, mp->getPlaybackSettings(&audioRate),
"java/lang/IllegalStateException", "unexpected error");
+ if (env->ExceptionCheck()) {
+ return nullptr;
+ }
ALOGV("getPlaybackSettings: %f %f %d %d",
audioRate.mSpeed, audioRate.mPitch, audioRate.mFallbackMode, audioRate.mStretchMode);
@@ -623,6 +629,9 @@ android_media_MediaPlayer_getSyncParams(JNIEnv *env, jobject thiz)
process_media_player_call(
env, thiz, mp->getSyncSettings(&scp.sync, &scp.frameRate),
"java/lang/IllegalStateException", "unexpected error");
+ if (env->ExceptionCheck()) {
+ return nullptr;
+ }
ALOGV("getSyncSettings: %d %d %f %f",
scp.sync.mSource, scp.sync.mAudioAdjustMode, scp.sync.mTolerance, scp.frameRate);