Fix getSecureStop returns zero opaque data intermittently.
Merge from http://go/wvgerrit/69587 In getSecureStop, the life of cdmStop will expire when leaving the if (isCmdResponseTypeSuccess()) scope. Since setToExternal() which is called by toHidlVec() only performs a pointer assignment, the content of cdmStop is lost and secureStop.opaqueData will have all zeros. Test: netflix streaming and offline playback Test: Play Movies & TV Test: GTS test -m GtsMediaTestCases --test com.google.android.media.gts.MediaDrmTest#testWidevineApi28 Test: GTS test -m GtsMediaTestCases bug: 120624463 Change-Id: I787e2b931561f07ca7346cb5a8968b868c08cee8
This commit is contained in:
@@ -671,7 +671,9 @@ Return<void> WVDrmPlugin::getSecureStop(
|
|||||||
_hidl_cb(Status::BAD_VALUE, SecureStop());
|
_hidl_cb(Status::BAD_VALUE, SecureStop());
|
||||||
return Void();
|
return Void();
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<uint8_t> id = toVector(secureStopId);
|
const std::vector<uint8_t> id = toVector(secureStopId);
|
||||||
|
std::vector<uint8_t> cdmStopVec;
|
||||||
SecureStop secureStop;
|
SecureStop secureStop;
|
||||||
|
|
||||||
CdmIdentifier identifier;
|
CdmIdentifier identifier;
|
||||||
@@ -687,7 +689,6 @@ Return<void> WVDrmPlugin::getSecureStop(
|
|||||||
mPropertySet.app_id(), cdmSsId, identifier, &cdmUsageInfo);
|
mPropertySet.app_id(), cdmSsId, identifier, &cdmUsageInfo);
|
||||||
|
|
||||||
if (isCdmResponseTypeSuccess(res)) {
|
if (isCdmResponseTypeSuccess(res)) {
|
||||||
std::vector<uint8_t> cdmStopVec;
|
|
||||||
for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin();
|
for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin();
|
||||||
iter != cdmUsageInfo.end();
|
iter != cdmUsageInfo.end();
|
||||||
++iter) {
|
++iter) {
|
||||||
|
|||||||
Reference in New Issue
Block a user