Merge "Reject partial clear subsamples when keys are not loaded" into rvc-dev
This commit is contained in:
@@ -313,8 +313,6 @@ CdmResponseType WvContentDecryptionModule::DecryptV16(
|
|||||||
bool status =
|
bool status =
|
||||||
cdm_engine->FindSessionForKey(parameters.key_id, &local_session_id);
|
cdm_engine->FindSessionForKey(parameters.key_id, &local_session_id);
|
||||||
if (!status) {
|
if (!status) {
|
||||||
// A key does not need to be loaded if the content consists entirely of
|
|
||||||
// clear data.
|
|
||||||
bool is_any_protected = std::any_of(
|
bool is_any_protected = std::any_of(
|
||||||
std::begin(parameters.samples), std::end(parameters.samples),
|
std::begin(parameters.samples), std::end(parameters.samples),
|
||||||
[](const CdmDecryptionSample& sample) -> bool {
|
[](const CdmDecryptionSample& sample) -> bool {
|
||||||
@@ -325,7 +323,22 @@ CdmResponseType WvContentDecryptionModule::DecryptV16(
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
if (is_any_protected) {
|
// A key does not need to be loaded if
|
||||||
|
// (a) the content consists of one or more samples and is entirely
|
||||||
|
// clear data
|
||||||
|
// (b) (legacy) the content consists of clear lead/frame in a single
|
||||||
|
// subsample. In earlier releases content was presented for decryption
|
||||||
|
// as individual subsamples. If the clear frame is broken up across
|
||||||
|
// multiple subsamples decryption, requests should be rejected
|
||||||
|
// (b/110251447)
|
||||||
|
// TODO(b/149524614): Remove support for the legacy case
|
||||||
|
if (is_any_protected ||
|
||||||
|
(parameters.observe_legacy_fields && parameters.samples.size() == 1 &&
|
||||||
|
parameters.samples[0].subsamples.size() == 1 &&
|
||||||
|
!(parameters.samples[0].subsamples[0].flags &
|
||||||
|
OEMCrypto_FirstSubsample &&
|
||||||
|
parameters.samples[0].subsamples[0].flags &
|
||||||
|
OEMCrypto_LastSubsample))) {
|
||||||
return KEY_NOT_FOUND_IN_SESSION;
|
return KEY_NOT_FOUND_IN_SESSION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user