From 385616a3f08215015d03d08879b344aeb43a3ad1 Mon Sep 17 00:00:00 2001 From: Edwin Wong Date: Sat, 5 Jan 2019 16:13:32 -0800 Subject: [PATCH] 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 --- 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 1453db4b..9a17323a 100644 --- a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp @@ -671,7 +671,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; @@ -687,7 +689,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) {