From f9ad1dad6940affe35bc2d622ac76366e5894dcc Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Tue, 12 Mar 2019 15:21:58 -0700 Subject: [PATCH] Update usage entry before closing a session [ Merge of http://go/wvgerrit/74443 ] When deleting a usage entry, a crypto session may need to be closed and reopened if a usage entry has previously been loaded. Before closing this session, the usage entry/usage table header information should be saved. This is for completeness rather than correctness. Looking at code, usage header and entry information are saved after the license release has been generated. This change might be helpful in case that changes in the future. Bug: 115920873 Test: CE CDM unit tests, WV unit/integration tests Change-Id: Ifc8f761497198247db31dab2f47e8323af783681 --- libwvdrmengine/cdm/core/src/cdm_session.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 03afc3af..db8ffc0a 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -775,6 +775,7 @@ CdmResponseType CdmSession::DeleteUsageEntry(uint32_t usage_entry_number) { // The usage entry cannot be deleted if it has a crypto session handling // it, so close and reopen session. + UpdateUsageEntryInformation(); CdmResponseType sts; crypto_session_->Close(); crypto_session_.reset(CryptoSession::MakeCryptoSession(crypto_metrics_)); @@ -936,14 +937,14 @@ CdmResponseType CdmSession::RemoveKeys() { } CdmResponseType CdmSession::RemoveLicense() { + CdmResponseType sts = NO_ERROR; if (is_offline_ || has_provider_session_token()) { - DeleteLicenseFile(); if (usage_support_type_ == kUsageEntrySupport && has_provider_session_token()) { - CdmResponseType sts = DeleteUsageEntry(usage_entry_number_); - if (NO_ERROR != sts) return sts; + sts = DeleteUsageEntry(usage_entry_number_); } + DeleteLicenseFile(); } return NO_ERROR; }