From f7659c72ddb69728cea7000ba2e28f5037a371f0 Mon Sep 17 00:00:00 2001 From: Edwin Wong Date: Fri, 4 Jan 2019 14:57:10 -0800 Subject: [PATCH] Fix getSecureStop returns zero opaque data intermittently. Merge from http://go/wvgerrit/69603 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: I8da473d5fd06d091980eade4b7216856ef097e04 --- libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp index 895f3cb8..3ef84b68 100644 --- a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp @@ -672,7 +672,9 @@ Return WVDrmPlugin::getSecureStop( _hidl_cb(Status::BAD_VALUE, SecureStop()); return Void(); } + const std::vector id = toVector(secureStopId); + std::vector cdmStopVec; SecureStop secureStop; CdmIdentifier identifier; @@ -688,7 +690,6 @@ Return WVDrmPlugin::getSecureStop( mPropertySet.app_id(), cdmSsId, identifier, &cdmUsageInfo); if (isCdmResponseTypeSuccess(res)) { - std::vector cdmStopVec; for (CdmUsageInfo::const_iterator iter = cdmUsageInfo.begin(); iter != cdmUsageInfo.end(); ++iter) {