MediaCodec: check for exceptions when creating crypto info

NativeCryptoInfo's constructor may throw an exception, which means that
pieces of `cryptoInfo` won't be properly initialized. Check for that
here and let it bubble up.

Bug: 206470603
Test: TreeHugger
Change-Id: Ifcd15a9ac70f5cfa979c58c84461a37a3a03ef90
This commit is contained in:
George Burgess IV
2022-11-02 11:42:33 -06:00
parent fbfc1da075
commit 436998b020

View File

@@ -2432,13 +2432,12 @@ static void android_media_MediaCodec_native_queueLinearBlock(
throwExceptionAsNecessary(env, BAD_VALUE);
return;
}
NativeCryptoInfo cryptoInfo = [env, cryptoInfoObj, size]{
if (cryptoInfoObj == nullptr) {
return NativeCryptoInfo{size};
} else {
return NativeCryptoInfo{env, cryptoInfoObj};
}
}();
auto cryptoInfo =
cryptoInfoObj ? NativeCryptoInfo{size} : NativeCryptoInfo{env, cryptoInfoObj};
if (env->ExceptionCheck()) {
// Creation of cryptoInfo failed. Let the exception bubble up.
return;
}
err = codec->queueEncryptedLinearBlock(
index,
memory,